插入排序演算法中的直接排序演算法,折半插入排序演算法,希爾排序演算法。
這三個演算法理解順序:直接----->折半-------->希爾排序演算法。
#include#include#define n 10
typedef int keytype; //定義關鍵字型別
typedef int datatype; //其他資料型別
typedef struct //記錄資料結構
rectype;
/* initrec : 建立排序的結構體陣列 */
void initrec(rectype arr_rec,int a, int n)
}/* showdata: 遞迴方式順序列印排序結構體陣列的關鍵字 */
void showdata(rectype arr_rec, int n)
else }
/*straightinsertsort: 直接插入排序,將前面的元素設為有序區,後面的元素為無序區。一開始的時候有序區只有乙個元素就是 r[0] */
void straightinsertsort(rectype r,int n)
r[j+1].key = temp; //插入
showdata(r, n); }}
/* binaryinsertsort : 折半插入排序,折半查詢演算法對直接插入排序優化,將待插入到有序區的元素插入的時候利用折半查詢找到插入的位置 */
void binaryinsertsort(rectype r, int n)
//當low>high時,找到了插入的位置就是high+1了
for (j = i - 1; j >= high + 1; j--)
r[j + 1] = r[j];
r[high+1] = temp;
showdata(r, n); }}
/* sellsort: 希爾排序演算法 */
void shellsort(rectype r, int n)
r[j + gap] = temp;
} gap = gap / 2; }}
int main()
; //int a[n] = ;
//int a[n] = ;
rectype arr_rec[n];
initrec(arr_rec, a, n);
//printf("%d\n", arr_rec)
showdata(arr_rec, n);
//straightinsertsort(arr_rec, n);
binaryinsertsort(arr_rec, n);
showdata(arr_rec, n);
system("pause");
return 0;
}
插入演算法演算法詳解及實現 c語言
插入排序原理很簡單,將一組資料分成兩組,分別將其稱為有序組與待插入組。每次從待插入組中取出乙個元素,與有序組的元素進行比較,並找到合適的位置,將該元素插到有序組當中。就這樣,每次插入乙個元素,有序組增加,待插入組減少。直到待插入組元素個數為0。實現 include include include 插...
演算法之插入排序 C語言
插入排序演算法 按照演算法導論講解,該演算法適合少量資料的排序,時間複雜度o n2 如下 include define maxsize 10 int insert sort int array 插入排序 int insert sort int array else tmp index if tmp ...
C語言演算法 折半插入排序
折半插入排序演算法思想 折半插入排序演算法思想和直接插入演算法思想大體上一致,將乙個數字插入已經有序的陣列中 不同的地方是,折半插入排序中找插入位置使用的方法是折半查詢演算法。include 折半插入排序演算法 2018.07.22 int main 插入排序演算法下標從一開始 for int i ...