算法 - 排序複習

基本插入排序數組

插入排序是面向鏈表結構的排序方法blog

插入排序的基本思想:排序

對於數組arr = [a0, a1, a2, ... , an]遞歸

  1. 從i=0開始,排好序的集合是{a0}
  2. 假設0-i個元素已經有序,有序集合是{a0, a1, ..., ai}
  3. 取第ai+1個元素,將其與有序集合從ai開始向前依次比較,直到遇到比ai小的元素aj
  4. 將ai插入鏈表中aj元素後
  5. 第an個元素插入後{a0, ... ,an}集合是已經排好序的了

盜一張很是形象的動圖:變量

 

快速排序搜索

快速排序是對冒泡排序的一種改進方法

  1. 設置兩個變量i、j,開始時,i=0,j=n-1
  2. 以第一個數組元素做爲key,即key=a[0]
  3. 從j開始向前搜索,找到第一個小於key的值a[j],互換a[j]和a[i]
  4. 從i開始向後搜索,找到第一個大於key的值a[i],互換a[j]和a[i]
  5. 直到i==j時,第一次排序完成,此時key位置前面的數字都小於key,後面的數字大於key
  6. 對key前面的區間和後面的區間再分別進行排序,直到全部遞歸區間所有排序完成

盜一張維基百科的圖:im

相關文章
相關標籤/搜索