直接插入排序的基本思想就是將乙個記錄插入到乙個排好序的有序表中,從而得到乙個新的有序表。
假設乙個線性表r[0…n], r[0…i]是有序的,則直接插入排序就是將r[i+1]插入到有序表r[0…i]中,從而使r[0…i+1]成為乙個有序表。重複以上的操作,直至將r[n]插入到r[0…n-1]中,則r[0…n]最終成為乙個有序的線性表。
實現插入排序(一):有監視哨
設定r[0]為監視哨,臨時儲存r[i+1]的值,並起到防止下標越界的作用。
陣列長度為n+1,下標1~n存資料。
typedef
int datatype;
int insertionsort(datatype *array, int size)
for(i = 2; i <= size; i++)
array[j+1]=array[0];
}return
0;}
實現插入排序(二):無監視哨
不設定監視哨,只將r[i+1]儲存在乙個輔助變數中。
陣列長度為n,下標0~n-1存資料。
typedef
int datatype;
int insertionsort(datatype *array, int size)
for(i = 1; i < size; i++)
array[j+1] = array[j];
}array[j+1] = temp;
}return
0;}
排序演算法 插入排序之直接插入排序
直接插入排序的核心思想是把乙個記錄插入乙個有序序列中,每插入乙個記錄就得到乙個新的有序序列,直到所有記錄都插入成功,得到有序序列。每次插入記錄時的有序序列如何得到,關鍵在第一次,第一次要插入的記錄時序列的第二個值,有序序列只有乙個值,就是第乙個記錄。a j 1 x j 1就是要插入的位置 print...
排序演算法之直接插入排序
直接插入排序 straight insertion sort 的基本思想 每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子串行中的適當位置,直到全部記錄插入完成為止。設陣列為a 0 n 1 其中紅色區域為有序區域 1.初始時,a 0 自成1個有序區,無序區為a 1.n 1 a 0 a ...
排序演算法之直接插入排序
直接插入排序類似於我們平常在打撲克摸牌時候的一種情形。我習慣於左手拿牌右手摸牌,每次先把左手中的牌齊整齊,然後右手新摸一張牌中把它放到左手中正確的位置,讓它成為乙個新的整齊的牌堆。如果根據上面的思路我們可以發現,直接插入排序的思想就是,從需要排序的第二個數字開始,拿取乙個數,與前面的數字進行比較,放...