基本插入排序數組
插入排序是面向鏈表結構的排序方法blog
插入排序的基本思想:排序
對於數組arr = [a0, a1, a2, ... , an]遞歸
- 從i=0開始,排好序的集合是{a0}
- 假設0-i個元素已經有序,有序集合是{a0, a1, ..., ai}
- 取第ai+1個元素,將其與有序集合從ai開始向前依次比較,直到遇到比ai小的元素aj
- 將ai插入鏈表中aj元素後
- 第an個元素插入後{a0, ... ,an}集合是已經排好序的了
盜一張很是形象的動圖:變量
![](http://static.javashuo.com/static/loading.gif)
快速排序搜索
快速排序是對冒泡排序的一種改進方法
- 設置兩個變量i、j,開始時,i=0,j=n-1
- 以第一個數組元素做爲key,即key=a[0]
- 從j開始向前搜索,找到第一個小於key的值a[j],互換a[j]和a[i]
- 從i開始向後搜索,找到第一個大於key的值a[i],互換a[j]和a[i]
- 直到i==j時,第一次排序完成,此時key位置前面的數字都小於key,後面的數字大於key
- 對key前面的區間和後面的區間再分別進行排序,直到全部遞歸區間所有排序完成
盜一張維基百科的圖:im
![](http://static.javashuo.com/static/loading.gif)