插入排序(c語言版)

2021-08-27 07:20:37 字數 825 閱讀 9820

插入排序(insertion sort)的基本思想:每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排序好的序列中,直到全部記錄插入完成為止.

假設待排序的記錄存放在陣列r[1..n]中。初始時,r[1]自成1個有序區,無序區為r[2..n].從i = 2起直到i = n 為止,依次將r[i]插入當前的有序區r[1..i - 1]中,生成含n個記錄的有序區.

將待插入記錄r[i]的關鍵字從右向左依次與有序區中記錄r[j](j=i - 1, i - 2, ....,1)的關鍵字比較:

若r[j]的關鍵字大於r[i]的關鍵字,則將r[j]後移乙個位置

若r[j]的關鍵字小於或等於r[i]的關鍵字,則查詢過程結束,j + 1即為r[i]插入位置

關鍵字比r[i]的關鍵字大的記錄均已後移,所以j + 1的位置已經騰空,只要將r[i]直接插入到此位置即可完成一趟直接插入排序

#include #include void insertsort(int *, int);

int main()

//快速排序

insertsort(num, n);

//列印輸出

for(i = 0; i < n; i ++)

printf("\n");

} return 0;

}void insertsort(int *array, int len)

else

}array[j + 1] = temp;

}}

當陣列和要求排序的順序相同時,為o(n)

當陣列和要求排序的順序相反時,為o(n * n)

平均時間複雜度為o(n * n)

資料結構(c語言版)排序1 插入排序

排序的概念 將乙個無序的序列排列成乙個有序的序列 按儲存介質可乙個分為 1.內部排序 資料量不大,資料在記憶體,無需內外存交換資料。2.外部排序 資料量較大,資料在外存,檔案排序 按比較器個數可分為 1.序列排序 單處理機 同時比較一對元素 2.並行排序 多處理機 同時比較多對元素 按主要操作可分為...

資料結構 C語言版 折半插入排序

折半插入排序是對直接插入排序的優化,折半插入排序所需附加儲存空間和直接插入排序相同,從時間上比較,折半插入排序僅減少了關鍵字間的比較次數,而記錄的移動次數不變。因此,折半插入排序的時間複雜度仍為o n2 直接插入排序可參考 此處以資料2的排序為例,用i從左到右遍歷到下標為5的位置,發現此處的值2小於...

資料結構與演算法(C語言版) 插入排序

低階排序演算法 氣泡排序,選擇排序,插入排序 高階排序演算法 歸併排序,堆排序,快速排序 插入排序就是在已經排序的資料中從大往小比較,出現比該數小的就插入到該位置後面。include using namespace std void insertionsort int a,int n int mai...