我“用”了解Quicksort,现在..我已经弄糊涂了。我知道我错过了一些非常明显的东西,毫无疑问,Quicksort是O(nlogn)
,n
部分很容易看到(因为我们需要在每个级别上使用n
比较来根据相应的元素移动元素,但是如何?拆分logn
不该”这是n-1
?例如:。快速排序精确分割是n-1?
1, 2, 3, 4
1, 2 3, 4
1 2 3 4
我们在第一级分裂1, 2, 3, 4
成1, 2
和3, 4
,这是一个分裂然后在我们分裂1, 2
为1 and 2
和3, 4
到3 and 4
第二级,这是2分裂,所以总共3分裂,所以n-1分裂?
我不认为这是重复的,因为我假设快速排序算法的平等分割(或者相当于分而治之算法的通用平等分割)我所要求的是直观解释为什么分裂是log(n)
尽管事实上,当你计算实际的拆分调用数量它是n-1
在任何通用的划分和征服alogirhtm
可能的重复[直观解释为什么QuickSort是n日志n?](http://stackoverflow.com/questions/10425506/intuitive-explanation-for-why-quicksort-is-n-log-n) –
它也很好记,实际上,在最坏的情况下,quicksort实际上是O(n^2)。它被认为是O(nlogn),如果枢轴选择得很好/它在大部分时间平均为nlogn –
好的,但我在我绘制的图中假定有相同的分区(并且这是针对任何类型的分而治之算法)然而,加起来的分裂是n-1 –