我「用」瞭解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 –