插入排序:
每次按鍵值把未排序的數插入到已排序隊列的適當位置,直到整個序列都排好序爲止。
基本思想:假設待排序的記錄存放在數組R[1..n]中。初始時,R[1]自成1個有序區,無序區爲R[2..n]。從i=2起直至i=n爲止,依次將R[i]插入當前的有序區R[1..i-1]中,生成含n個記錄的有序區。
實例圖如下:
算法步驟:
算法實現:
for (int i=low; i<high; i++)
for (int j=i; j>low && dest[j-1]>dest[j]; j–)
swap(dest, j, j-1);
一種改進的算法:二分插入排序,在把待排序數插入到排好序時,通過二分查找的方法找到插入的位置。
算法使用範圍:對少量的數據比較高效。