實現直接插入排序演算法

2021-09-10 21:26:22 字數 2090 閱讀 5523

/**

*    實驗題目:

*        實現直接插入排序演算法

*    實驗目的:

*        領會直接插入排序的過程和演算法設計

*    實驗內容:

*        設計程式,實現直接插入排序演算法。用相關資料進行測試,並

*    輸出各趟的排序結果。

*/#include

#define max_len     (100)                       //  最大長度

typedef int key_type;                           //  定義關鍵字型別為int

typedef char info_type;

typedef struct

rec_type;                                      //  查詢元素的型別

/*-----------------x和y交換------------------*/

void swap_rec(rec_type &x, rec_type &y)         //  引用型別

/*-----------------建立順序表------------------*/

void create_list(rec_type recs, key_type keys, int n)

/*-----------------輸出順序表------------------*/

void disp_list(rec_type recs, int n)

/*-----------------以下運算針對堆排序的程式------------------*/

/*-----------------建立順序表------------------*/

void create_list1(rec_type recs, key_type keys, int n)

}/*-----------------輸出順序表------------------*/

void disp_list1(rec_type recs, int n)

printf("\n");

}/*-----------------對recs[0...n-1]按遞增有序進行直接插入排序---------------------*/

static void insert_sort(rec_type recs, int n)

while(j >= 0 && recs[j].key > tmp.key);

recs[j + 1] = tmp;                      //  在j + 1處插入recs[i]

}disp_list(recs, n);}}

int main(int argc, char *ar**)

;rec_type recs[max_len];

create_list(recs, a, n);

printf("排序前: ");

disp_list(recs, n);

insert_sort(recs, n);

printf("排序後: ");

disp_list(recs, n);

return 0;

}測試結果:

排序前: 9 8 7 6 5 4 3 2 1 0

i = 1, 插入8, 插入結果: 8 9 7 6 5 4 3 2 1 0

i = 2, 插入7, 插入結果: 7 8 9 6 5 4 3 2 1 0

i = 3, 插入6, 插入結果: 6 7 8 9 5 4 3 2 1 0

i = 4, 插入5, 插入結果: 5 6 7 8 9 4 3 2 1 0

i = 5, 插入4, 插入結果: 4 5 6 7 8 9 3 2 1 0

i = 6, 插入3, 插入結果: 3 4 5 6 7 8 9 2 1 0

i = 7, 插入2, 插入結果: 2 3 4 5 6 7 8 9 1 0

i = 8, 插入1, 插入結果: 1 2 3 4 5 6 7 8 9 0

i = 9, 插入0, 插入結果: 0 1 2 3 4 5 6 7 8 9

排序後: 0 1 2 3 4 5 6 7 8 9

直接插入排序演算法

直接插入演算法 有乙個已經有序的資料序列,要求在這個已經排好的資料序列中插入乙個數,但要求插入後此資料序列仍然有序,這個時候就要用到一種新的排序方法 插入排序演算法,插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料,演算法適用於少量資料的排序,時間複...

直接插入排序演算法

撲克牌是我們幾乎每個人都可能從事過的遊戲。而最基本的撲克玩法都是一邊摸牌,一邊理牌。假如我們拿到了這樣一手牌,如圖9 5 1。啊,似乎是同花順呀,別急,我們得理一理順序才知道是否是真的同花順。請問,如果是你,應該如何理牌呢?應該說,哪怕你是第一次玩撲克牌,只要認識這些數字,理牌的方法都是不用教的。將...

直接插入排序演算法

每次將乙個待排序的記錄按其關鍵字的大小插到前面已經排序的序列中的適當位置,直到全部記錄插入完畢為止。第一趟比較前兩個數,然後把第二個數按大小插入到有序表中 第二趟把第三個資料與前兩個數從後向前掃瞄,把第三個數按大小插入到有序表中 依次進行下去,進行了 n 1 趟掃瞄以後就完成了整個排序過程。將待插入...