內部排序 插入排序 希爾排序

2021-07-08 09:26:06 字數 668 閱讀 6901

希爾排序將要排序的數值按照某個間隔分成數個數列集合,再對各個數列集合進行插入式排序,重複進行數列分割,每次分割的長度縮小為上一次分割長度的一半,直到分割間隔為0,此時排序完成。

直接上code吧

#include "stdafx.h"

#include #include #include void shell_sort(int *list, int len);

int _tmain(int argc, _tchar* argv)

; int len = sizeof(list) / sizeof(list[0]);

shell_sort(list, len);

return 0;

}void shell_sort(int *list, int len)

list[cur_idx + step] = temp;

printf("\n current state: ");

for (k = 0; k < len; k++)

}step = step / 2;

} printf("\n");

}

由於該方法對已經排序好的部分再進行排序,最後幾次迴圈速度會比較快。

空間複雜度為o(1)

時間複雜度為o(n^r)     1.25

內部排序之插入排序 希爾排序

插入排序 insertion sort 插入排序由n 1趟 pass 排序組成,對於p 1趟到p n 1趟,插入排序可以保證從位置零到位置p上的元素全部有序,有這樣乙個事實 1 當插入p位置 設為data 的時候,從0位置到p 1已全部有序,如果data比p 1位置上的元素大,那麼直接放在p位置即可...

插入排序 希爾插入排序

本文借鑑於lsgo實驗室創始人馬老師 演算法 希爾插入排序 delta len nums 2 while delta 0 shell delta,nums delta delta 2return nums defshell delta,key for i in range delta,len key...

排序 插入排序,希爾排序

基本思想 每一步將乙個待排序的元素,按其排序碼的大小,插入到前面已經排好序的序列的合適位置上,直到元素全部插入完畢。直接插入排序 空間複雜度 o 1 時間複雜度 o n n 穩定性 穩定 使用場景 對於一組有序的序列,想插入乙個資料。插入排序的優化 使用二分查詢找到合適的插入位置 折半插入排序 vo...