直接插入排序和希爾排序

2021-07-27 17:53:35 字數 759 閱讀 5880

#if ! defined(insertsort_h)

#define insertsort_h

#include#define maxsize 100

typedef int keytype;//關鍵字型別用來比較

typedef char infotype;//其他型別的資訊

typedef structrectype;//記錄型別

typedef rectype seqlist[maxsize+1];//+1用來使[0]作為哨兵,但是在實際使用中往往不能使[0]作為哨兵

/***********直接插入排序**********

約定:在本次排序中不使用哨兵,直接宣告臨時變數

基本思路:

1.把待排序的線性表分為有序和無序兩部分。

2.從無序裡依次取出乙個元素往有序區插入到合適部分。

3.直到所有無序區的元素都插入到有序區為止。

*/void insertsort(rectype seqlist,int n){

rectype t;

int i,j;

for(i=1;i=0 && t.key=0 && r.key注意檔案字尾最好為.c!

希爾排序時j=j-dk,不再是j--,因為增量會變!

最好畫一遍執行過程這個比較容易懂!

直接插入排序和希爾排序

一 插入排序 在一組無序的陣列中,假設第乙個有序,每一次陣列中剩餘的元素與第乙個比較,然後逐個插入到乙個有序的序列中,直到這個陣列所有的數字有序為止 二 直接插入演算法 演算法思路 1 我們先假設第乙個有序的數字下標為end,2 下乙個要插入的數字 tmp 繼續構成有序就直接插入,此時end向後挪一...

直接插入排序和希爾排序

一 直接插入排序 插入排序 1.1 基本思想和原理 將乙個記錄插入到已排序好的有序表中,從而得到乙個新,記錄數增1的有序表。即 先將序列的第1個記錄看成是乙個有序的子串行,然後從第2個記錄逐個進行插入,直至整個序列有序為止。要點 設立哨兵,它有兩個作用 進入查詢 插入位置 迴圈之前,它儲存了r i ...

直接插入排序 和 希爾排序

直接插入排序的思想 include include using namespace std 直接插入排序 9,1,5,8,3,7,4,6,2 void insertsort int arr,int sz else break arr end key void printf int arr,int s...