資料結構C語言版直接插入排序

2021-08-29 16:31:11 字數 1587 閱讀 3364

sort.h

#pragma once

#include

#include

#include

#define n 10

void

inputdata

(int

* d)

;//輸入資料

void

printdata

(int

* d)

;//輸出資料

void

insertsort

(int

* d)

;//直接插入排序

void

shellsort

(int

*d,int length)

;//希爾排序

sort.c

#include

"sort.h"

void

inputdata

(int

* d)

printf

("\n\n");

}void

printdata

(int

* d)

printf

("\n\n");

}void

swap

(int

* d1,

int*d2)

//直接插入排序

//假設待排序的記錄存放在陣列d[0..n-1]中。

//初始時,d[0]自成1個有序區,無序區為r[1.n-1]。

//從i=1起直至i=n-1為止,依次將d[i]插入當前的有序區d[1..n-1]中,

//生成含n個記錄的有序區。

void

insertsort

(int

* d)

right--;}

}printf

("排序成功!\n\n");

}

main.c

#include

"sort.h"

void

test()

;/*int d[n];

inputdata(d);*/

printdata

(d);

/*insertsort(d);

printdata(d);*/

shellsort

(d,sizeof

(d)/

sizeof

(d[0])

);printdata

(d);

}int

main()

結果:

關於時間複雜度的計算:排序時當資料為非遞減有序排列即正序時比較次數為:(n+2)(n-1)/2,反之逆序時,比較次數為(n+4)(n-1)/2,若資料隨機,取其平均值為:n^2/4,即時間複雜度為o (n^2)

C 資料結構 直接插入排序

include typedef int infotype define n 8 假設的檔案長度,即待排序的記錄數目 typedef int keytype 假設的關鍵字型別 typedef struct rectype typedef rectype seqlist n 1 seqlist為順序表型...

C 資料結構 直接插入排序

include define n 12 using namespace std 將46,74,16,53,14,26,40,53,86,65,27,34從小到大排序 直接插入排序方法 基本思想 依次從待排序數列中取出乙個元素,跟前面已經排序好的有序數列從後往前比較後,插入到有序數列的適當位置 voi...

資料結構 直接插入排序

直接插入排序 include include typedef struct int elem int length sqlist void initsqlist sqlist l int i printf 請輸入元素個數 scanf d l length l elem int malloc size...