插入排序原理很簡單,將一組資料分成兩組,分別將其稱為有序組與待插入組。每次從待插入組中取出乙個元素,與有序組的元素進行比較,並找到合適的位置,將該元素插到有序組當中。就這樣,每次插入乙個元素,有序組增加,待插入組減少。直到待插入組元素個數為0。
**實現:
#include#include#include//插入排序
void insertsort(int *array,int size);
//列印
//列印
void print(int *array, int size)
printf("\n");
}//插入排序
void insertsort(int *array, int size)
//插array[pos + 1] = k;
}}
測試檔案
#include"sort.h"
void testinsertsort()
; printf("排序前:");
//列印
print(array, sizeof(array) / sizeof(array[0]));
//插入排序
insertsort(array, sizeof(array) / sizeof(array[0]));
printf("排序後:");
//列印
關於排序的穩定性:
如果序列中有兩個元素r[i]==r[j](i!=j),若在排序之前r[i]在r[j]的前面,在排序之後r[i]依舊在r[j]的前面,則稱這個演算法是穩定的。
時間複雜度:最壞:o(n^2) 最優:o(n)
空間複雜度:o(1)-----(沒有借助輔助空間)
穩定性:穩定 (乙個元素乙個元素的插入,肯定不會跨過與自己相同的值)
適用情況:資料量少且接近有序。
插入排序演算法詳解及實現
插入排序相對氣泡排序而言是一種較為快捷方便的排序演算法。氣泡排序 插入排序原理很簡單,講一組資料分成兩組,我分別將其稱為有序組與待插入組。每次從待插入組中取出乙個元素,與有序組的元素進行比較,並找到合適的位置,將該元素插到有序組當中。就這樣,每次插入乙個元素,有序組增加,待插入組減少。直到待插入組元...
插入排序演算法詳解及實現
插入排序相對氣泡排序而言是一種較為快捷方便的排序演算法。氣泡排序 插入排序原理很簡單,講一組資料分成兩組,我分別將其稱為有序組與待插入組。每次從待插入組中取出乙個元素,與有序組的元素進行比較,並找到合適的位置,將該元素插到有序組當中。就這樣,每次插入乙個元素,有序組增加,待插入組減少。直到待插入組元...
堆排序演算法詳解及實現 c語言
堆排序原理 堆排序指的是將大堆 小堆 堆頂 即下標為0 元素與堆的最後乙個 即下標為hp size 1 元素交換,hp size 將其餘的元素再次調整成大堆 小堆 再次將堆頂 即下標為0 元素與堆的最後乙個 即下標為hp size 1 元素交換,hp size 將其餘的元素再次調整成大堆 小堆 重複...