第16周專案1 驗證演算法(1)直接插入排序

2021-07-25 09:36:06 字數 3159 閱讀 5282

問題:

[cpp]view plain

copy

/* * 檔名稱:專案1-1.cbp 

* 作    者:程德泉

* 完成日期:2023年12月15日 

* 版 本 號:v1.0 

* 問題描述: 驗證直接插入排序

* 輸入描述:無 

* 程式輸出:測試資料 */

1.直接插入排序

[cpp]view plain

copy

#include 

#define maxsize 20

typedef

intkeytype;    

//定義關鍵字型別

typedef

char

infotype[10];  

typedef

struct

//記錄型別

rectype;              //排序的記錄型別定義

void

insertsort(rectype r,

intn) 

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

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

}  }  

intmain()  

;  for

(i=0; i

r[i].key=a[i];  

printf("排序前:"

);  

for(i=0; i

printf("%d "

,r[i].key);  

printf("\n"

);  

insertsort(r,n);  

printf("排序後:"

);  

for(i=0; i

printf("%d "

,r[i].key);  

printf("\n"

);  

return

0;  

}  

執行結果:

2.顯示直接插入排序過程

[cpp]view plain

copy

#include 

#define maxsize 20

typedef

intkeytype;    

//定義關鍵字型別

typedef

char

infotype[10];  

typedef

struct

//記錄型別

rectype;              //排序的記錄型別定義

void

insertsort(rectype r,

intn) 

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

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

printf("i=%d: "

,i);  

for(k=0; k

printf("%d "

,r[k].key);  

printf("\n"

);  

}  }  

intmain()  

;  for

(i=0; i

r[i].key=a[i];  

printf("排序前:"

);  

for(i=0; i

printf("%d "

,r[i].key);  

printf("\n"

);  

insertsort(r,n);  

printf("排序後:"

);  

for(i=0; i

printf("%d "

,r[i].key);  

printf("\n"

);  

return

0;  

}  執行結果:

3.折半插入排序

[cpp]view plain

copy

#include 

#define maxsize 20

typedef

intkeytype;    

//定義關鍵字型別

typedef

char

infotype[10];  

typedef

struct

//記錄型別

rectype;              //排序的記錄型別定義

void

insertsort1(rectype r,

intn) 

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

for(j=i-1; j>=high+1; j--)  

r[j+1]=r[j];  

r[high+1]=tmp;  

}  }  

intmain()  

;  for

(i=0; i

r[i].key=a[i];  

printf("排序前:"

);  

for(i=0; i

printf("%d "

,r[i].key);  

printf("\n"

);  

insertsort1(r,n);  

printf("排序後:"

);  

for(i=0; i

printf("%d "

,r[i].key);  

printf("\n"

);  

return

0;  

}  執行結果:

學習總結:

插入的三種演算法,其中直接插入最為簡單穩定,適用於小數列。

第16周專案1 驗證演算法(1)直接插入排序

檔名稱 專案1 1.cbp 作 者 滕健 完成日期 2016年12月09日 問題描述 驗證直接插入排序 輸入描述 無 程式輸出 測試資料 include define maxsize 20 typedef int keytype 定義關鍵字型別 typedef char infotype 10 ty...

第16周專案1 驗證演算法

問題及 檔名稱 cpp1.cpp 完成日期 2015年12月14日 版本號 v1.0 1 直接插入排序 include define maxsize 20 typedef int keytype 定義關鍵字型別 typedef char infotype 10 typedef struct 記錄型別...

第16周專案1 驗證演算法(2)

檔名稱 專案1 2.cbp 作 者 孟琪琪 完成日期 2016年12月15日 版 本 號 v1.0 問題描述 驗證希爾排序 快速排序和堆排序 輸入描述 無 程式輸出 測試資料 希爾排序 include define maxsize 20 typedef int keytype 定義關鍵字型別 typ...