插入排序及公升級版希爾排序

2022-09-16 14:54:10 字數 693 閱讀 3619

1

//直接快插法,最好情況每次插入資料就在最後時間複雜度為o(n),最壞情況為每次插入資料為最小,2//

每次移動最大次數及時間複雜度為o(n2)

3void insertsort(int array, intn)4

15 array[j] = tenp;//

插入到正確位置16}

17}1819

//插入排序公升級版希爾排序

20void shellsort(int array, int

n)

2138

array[j + increment] = temp;39}

40}41} while (increment > 1);

*/42

43int

i, j;

44int step =n;

45for (step = step / 2; step > 0; step = step / 2) //

這裡的step步長是根據元素個數這種情況定義的

4658 array[j] = temp; //

把小的值往前插入

59}

60} 61}

62}63//

希爾排序的時間複雜取決於增量序列,但是它已經突破了為o(n2);

插入排序 希爾插入排序

本文借鑑於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...

插入排序 希爾排序

我們知道當乙個序列基本有序時,直接插入會變得很高效。因為此時只需少量的移動元素,操作集中在元素的比較上。基於這種想法,我們就試圖把乙個序列在進行直接插入前調整得盡量有序。這就是希爾排序 shell sort 的核心思路。shell只是演算法發明者的名字,無特殊含義 那到底該怎麼做呢?希爾排序一反以前...

插入排序 希爾排序

希爾排序 先將整個待排序的記錄序列分割成為若干子串行分別進行直接插入排序,待整個序列中的記錄 基本有序 時,再對全體記錄進行依次直接插入排序。以n 10的乙個陣列49,38,65,97,26,13,27,49,55,4為例 第一次 gap 10 2 5 4938 6597 2613 2749554 ...