目錄
[toc]
說明:本博客所有圖片來自書籍《算法導論》,在此感謝本書作者!
下面簡單介紹一下插入、歸併、堆排序、快速排序等常用排序算法。
插入排序
原理介紹:
顧名思義,插入排序即將沒有排好順序的數據插入到已經排好順序的數據中。插入排序類似我們玩撲克牌,如圖1所示,例如2/4/5/10是已經排好的序列,那麼新來了一個數字7,從最後面數字10開始找,7小於10那麼繼續與前面的數字比較,7大於5,因此7排在5的後面,即將7插入在5的後面。
//數組下標從0開始
insertion_sort(A)
{ //A是一個數組
for i = 1:A.Length-1
{ //A.Length是數組的長度
key = A[i]; //記錄新插入的數據
j = i-1;
while(key<A[j]&&j>=0)
{
A[j+1] = A[j]; //前一個數移動到後一個位置
--j;
}
A[j+1] = key; //將新數據插入到新的位置
}
}
插入排序總結
從僞代碼直到,插入排序不需要複製數組,是原址的( in place)。插入排序的時間複雜度爲T(n) = O(n^2)。
今天暫時到這裏,明天更新歸併排序。