Quicksort最佳情况的一个条件是,枢轴始终在中间正确打点(也许在最后阶段除外),因此,绝对是正确的。最重要的是,您希望交换尽可能少,具体的配置取决于实现细节。
一种常见的实现方式是先将数据透视表交换到最后一个位置,然后排列其他元素,以使小于(或等于)数据透视表的元素出现在较大的元素之前,最后将数据透视表(从最后一个位置)交换为第一个较大的元素(然后重复出现)。
另一种方法是在安排之前将枢轴放入第一个插槽中,并与最后一个不超过枢轴的插槽交换。
对于绝对最佳的情况,这些策略需要不同的配置。例如,
4 1 3 5 6 7 2
是“将数据交换到最后一位”变体的最佳方案,而
4 1 3 2 6 5 7
是“支点固定”的最佳案例。
最坏的情况是,枢轴始终移到数组的一端,精确的细节再次取决于实现,但排序或反向排序通常是最坏的情况。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)