一、直接插入排序(straight insertion sort)
1.時間複雜度:o(n2)
2.空間複雜度:o(1)
3.實現:
1二、折半插入排序(binary insertion sort)void insertsort(int* a, int
num)
10 a[j + 1] = a[0];//
插入到正確位置11}
12}13 }
1.時間複雜度:o(n2)
2.空間複雜度:o(1)
3.實現:
1三、希爾排序(縮小增量排序)void binaryinsertsort(int* a, int
num)
13else16}
17for (j = i - 1; j >= low; j--)
20 a[low] = a[0];//
插入正確位置21}
22}23 }
1.時間複雜度:o(n1.5)
2.空間複雜度:o(1)
3.增量序列:應使增量序列中的值沒有除1之外的公因子,並且最後乙個增量值必須等於1
4.實現:
1四、源**void shellinsert(int* a, int k, int
num)
9 a[j + k] = a[0];//
插入正確位置10}
11}12}
1314
void shellsort(int* a, int
num) ;//
增量序列
16for (i = 0; i < 4; i++)
19 }
1源**//在 microsoft visual studio community 2022 下通過測試
2#define _crt_secure_no_warnings
3 #include 4
5void insertsort(int* a, int
num)
14 a[j + 1] = a[0];//
插入到正確位置15}
16}17}
1819
void binaryinsertsort(int* a, int
num)
31else34}
35for (j = i - 1; j >= low; j--)
38 a[low] = a[0];//
插入正確位置39}
40}41}
4243
void shellinsert(int* a, int k, int
num)
51 a[j + k] = a[0];//
插入正確位置52}
53}54}
5556
void shellsort(int* a, int
num) ;//
增量序列
58for (i = 0; i < 4; i++) 61}
6263
int main(void
) ;//
a[0]設定監視哨
66//
insertsort(a, 11);
67//
binaryinsertsort(a, 11);
68 shellsort(a, 11
);69
for (i = 1; i < 11; i++)
72return0;
73 }
插入類排序
插入類排序基本思想 在乙個已經排好序的記錄子集的基礎上,每一步將下乙個待排序的記錄有序插入已排好序的子集中,直到將所有待排序記錄插入為止。1.直接插入排序 演算法思想 將第i個記錄插入到前面i 1個已經排好序的記錄中。假設待排序記錄存放在r 1.length 之中,為了提高效率附設乙個監視哨r 0 ...
排序之插入類排序
1.直接插入排序 思想 從無到有,陣列一直保持有序遞增,新來的元素p與數值r從末到首比較,若p小於陣列數值,則將陣列值後移,為p的插入預留空間 r從r 1 開始儲存,最壞情況下時間r中元素遞增,時間複雜度為o n 2 空間複雜度為o 1 void insertsort int r,int n els...
內部排序(1) 插入類排序
插入類排序 一 直接插入排序 演算法分析 從空間角度來看,只需要乙個輔助空間r 0 從時間角度來看,主要時間耗費在關鍵字比較和移動元素上。直接插入排序的時間複雜度為o n 2 空間複雜度為o 1 直接插入排序是穩定的。直接插入排序在基本有序時效率較高,並且在序列規模不是很大時效率也很高。void i...