【初探】快速排序學習總結


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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章