插入排序之表插入

2021-08-26 21:57:45 字數 966 閱讀 6425

表插入

時間複雜度o(n^2)

附加空間o(1)

穩定排序

#define _crt_secure_no_warnings

#include using namespace std;

#define len 8 // 有len個元素要排

struct record ;

void linklistinsertsort(record *arr, int length) // length是要排序的元素的個數,0號單元除外

arr[i].next = arr[q].next; // p為0時亦然

arr[q].next = i; }}

int main(void)

; a[0].next = 1; // 0號單元作為頭結點,指標域注意初始化

for (int i = 1; i <= len; ++i)

cin >> a[i].key >> a[i].otherinfo;

linklistinsertsort(a, len);

for (int p = a[0].next; p != 0 ; p = a[p].next)

cout << a[p].key << '\t' << a[p].otherinfo << endl;

return 0;}/*

in.txt:

49 1

38 0

65 0

97 0

76 0

13 0

27 0

49 2

out:

13 0

27 0

38 0

49 1

49 2

65 0

76 0

97 0

*/

插入排序(二) 表插入排序

上篇文章已經提到直接插入排序中,時間消耗在了元素間的比較次數和移動這兩方面。折半插入排序可以減小比較次數,而表插入排序則可以避免元素移動。但它需要建立資料結構,並且需要額外的空間 省時一般都耗空間,這個在演算法上很常見哦!首先給出表結構,定義如下 define size 100 typedef st...

表插入排序

時間複雜度o n 2 空間複雜度o n 這是穩定的排序方法 表插入排序 include includeusing namespace std define size 10 define max 1000 typedef int elemtype typedef structslnode typede...

7 插入排序之折半插入排序

7 折半插入排序 折半插入 考慮到插入第i個元素前面的i 1個元素是有序的,計算0 i 1的中間點,和i個元素進行比較,這樣完成了折半。然後不停地用上面的步驟,快速的找出第i個元素的位置。時間複雜度 折半插入排序比直接插入排序明顯減少了關鍵字之間的比較次數,但是移動次數是沒有改變。所以,折半插入排序...