希爾排序將要排序的數值按照某個間隔分成數個數列集合,再對各個數列集合進行插入式排序,重複進行數列分割,每次分割的長度縮小為上一次分割長度的一半,直到分割間隔為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...