快速排序最佳案例方案的示例(需要有人检查我的答案是否正确)

使用15个数字的列表,我需要给出代表最佳和最差情况的列表。它说:“

qs使用列表中的第一项作为关键项”。我不确定是否每次都选择第一项作为枢轴,但这就是我所假设的…。

最好的情况是..我想到了(粗体表示支点,斜体表示大于和小于标记):

1 3 2 6 5 7 412 9 11 10 14 13 15

1 3 26 5 7–8– 9 11 1014 13 15

1 3 --4– 57 ........ 8 ........ 9 11–12–14 13 15

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

希望有人可以在这里验证我的工作,如果发现错误,请向我指出如何以及为什么。

回答:

Quicksort最佳情况的一个条件是,枢轴始终在中间正确打点(也许在最后阶段除外),因此,绝对是正确的。最重要的是,您希望交换尽可能少,具体的配置取决于实现细节。

一种常见的实现方式是先将数据透视表交换到最后一个位置,然后排列其他元素,以使小于(或等于)数据透视表的元素出现在较大的元素之前,最后将数据透视表(从最后一个位置)交换为第一个较大的元素(然后重复出现)。

另一种方法是在安排之前将枢轴放入第一个插槽中,并与最后一个不超过枢轴的插槽交换。

对于绝对最佳的情况,这些策略需要不同的配置。例如,

4 1 3 5 6 7 2

是“将数据交换到最后一位”变体的最佳方案,而

4 1 3 2 6 5 7

是“支点固定”的最佳案例。

最坏的情况是,枢轴始终移到数组的一端,精确的细节再次取决于实现,但排序或反向排序通常是最坏的情况。

以上是 快速排序最佳案例方案的示例(需要有人检查我的答案是否正确) 的全部内容, 来源链接: utcz.com/qa/416441.html

回到顶部