資料結構例程 插入排序之直接插入排序

2021-07-08 10:33:11 字數 2018 閱讀 4013

本文是[資料結構基礎系列(9):排序]中第2課時[插入排序之直接插入排序]的例程。

1.直接插入排序

#include 

#define maxsize 20

typedef

int keytype; //定義關鍵字型別

typedef

char infotype[10];

typedef

struct

//記錄型別

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

void insertsort(rectype r,int n) //對r[0..n-1]按遞增有序進行直接插入排序

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

}}int main()

; for (i=0; iprintf("排序前:");

for (i=0; iprintf("%d ",r[i].key);

printf("\n");

insertsort(r,n);

printf("排序後:");

for (i=0; iprintf("%d ",r[i].key);

printf("\n");

return

0;}

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

#include 

#define maxsize 20

typedef

int keytype; //定義關鍵字型別

typedef

char infotype[10];

typedef

struct

//記錄型別

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

void insertsort(rectype r,int n) //對r[0..n-1]按遞增有序進行直接插入排序

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

printf("i=%d: ",i);

for (k=0; kprintf("%d ",r[k].key);

printf("\n");

}}int main()

; for (i=0; iprintf("排序前:");

for (i=0; iprintf("%d ",r[i].key);

printf("\n");

insertsort(r,n);

printf("排序後:");

for (i=0; iprintf("%d ",r[i].key);

printf("\n");

return

0;}

3.折半插入排序

#include 

#define maxsize 20

typedef

int keytype; //定義關鍵字型別

typedef

char infotype[10];

typedef

struct

//記錄型別

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

void insertsort1(rectype r,int n) //對r[0..n-1]按遞增有序進行直接插入排序

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

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

r[high+1]=tmp;

}}int main()

; for (i=0; iprintf("排序前:");

for (i=0; iprintf("%d ",r[i].key);

printf("\n");

insertsort1(r,n);

printf("排序後:");

for (i=0; iprintf("%d ",r[i].key);

printf("\n");

return

0;}

資料結構例程 插入排序之直接插入排序

本文是 資料結構基礎系列 9 排序 中第2課時 插入排序之直接插入排序 的例程。1.直接插入排序 include define maxsize 20 typedef int keytype 定義關鍵字型別 typedef char infotype 10 typedef struct 記錄型別 re...

資料結構 插入排序 直接插入排序

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

資料結構之 直接插入排序

直接插入排序即是在要排序的陣列中,假設前n 1 n 2 個數已經是排好序的,現在要把第n個數插入到前n個已經排好序的陣列中,使得這n個數也變成有序的,如此反覆迴圈,使得要排序的陣列中的最後乙個元素也排好序。我們可以先假設第乙個數是排好序的,然後第二個數和第乙個數進行比較,如果第二個數比第乙個數大,那...