【发布时间】:2021-02-03 15:36:36
【问题描述】:
我想从理论上询问(不考虑循环中的比较)在排序数组的情况下比较次数有何不同。让有一个选择最后一个元素作为枢轴元素的实现。
现在给出一个长度为 10 的数组。这里我只谈索引。
1> 如果数组已排序:10 元素是主元,总比较数为 9。(对于特定实现):
a)1 2 3 4 5 6 7 8 9 <10> comp = 9(考虑到第 9 个元素)
b)1 2 3 4 5 6 7 8 <9> 10 comp = 8(枢轴是 9)....等等
所以总比较 = 9 + 8 + 7 +...1 ~ n^2
2> 如果我们得到一些排列,这样每次我们将枢轴作为数组的中间。
a)1 2 3 4 5 6 7 8 9 <10>comp = 9 (pivot = 10)
现在让它在中间分区
b) 我们得到这两个分区 1 2 3 4 <5> 6 7 8 <9> 10 comp = 4 + 3 = 7
...等等。
我没有看到这两个有太大区别。
【问题讨论】:
标签: quicksort