- isshe
- 20160626
- https://github.com/isshe/
1.什麼是快速排序?
快速排序的思想是:
以一個元素K的值爲基準, 把要排序數據分爲”比K大的”和”比K小的”兩部分.
再對這兩部分執行相同操作,整個過程可以遞歸執行.
2.快速排序的時間複雜度和空間複雜度?
時間複雜度:O(n*log2n)~O(n2)
空間複雜度:O(log2n)~O(n)
3.示例:
k
4 2 5 9 1 8 3 6 7
i j
a. 選擇k=4作爲基準
b.方法一:j從右往左找比4小的(找到3), i從左往右找比4大的(找到5),交換i和j位置的值.當i=j時,交換k和i/j位置的值(把4放到中間).一輪結束.後面遞歸執行相同的操作.
方法二:j從右往左找比4小的,交換k和j位置的值,i從左往右找比4大的,交換k和i位置的值.當i=j時,一輪結束.
注意:先從右邊開始掃描代碼會更簡潔些.
代碼:
https://github.com/isshe/Blog/tree/master/7_sort20160624