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...