希爾排序的最大間隔是利用公式 h = h * 3 + 1當前h設定為1 ,減小間隔公式 h = (h - 1) / 3
/*
h = 4;
while(h > 0)
array[0] = 2;
array = [2,23,34,1,12,4,15,67,23];
第二次 i = 5
temp = array[5] = 4;
j = 5;
while(j > 3 && array[1] > 4)
array[1] = 4;
array = [2,4,34,1,12,23,15,67,23];
第三次 i = 6;
temp = array[6] = 15;
int j = i = 6;
while(j > 3 && array[2] > 15)
array[2] = 15;
array = [2,4,15,1,12,23,34,67,23];
第四次temp = array[7] = 67
i = 7;
while(j > 3; array[3] > 67 (不符合條件不進行迴圈操作)
array[7] = 67
}}後面的就是乙個這樣排序過程,通過減小間隔再次重新排序,當排到間隔為0時推出迴圈
*/long
array =
;public
long
shellsort
(long
array)
while
(h >0)
array[j]
= temp;
}// 減小間隔
h =(h -1)
/3;}
return array;
}
資料結構經典演算法之希爾排序
目錄 希爾排序 一 操作方法 二 排序方法 三 演示 四 c 實現 五 效能分析 希爾排序又稱 縮小增量排序 基本思想 先取乙個小於n的整數d1作為第乙個增量,然後把檔案的全部記錄分成d1個組。所有距離為d1的倍數的記錄放在同個乙個組中,現在各組內進行直接插入排序 然後,取第二個增量d2實質上希爾排...
資料結構 演算法 希爾排序
希爾排序過程 希爾排序的基本思想是 將陣列列在乙個表中並對列分別進行插入排序,重複這過程,不過每次用更長的列 步長更長了,列數更少了 來進行。最後整個表就只有一列了。將陣列轉換至表是為了更好地理解這演算法,演算法本身還是使用陣列進行排序。def shell sort alist 希爾排序 n len...
資料結構之希爾排序
直接插入排序在資料量較小而且接近 正序 的時候,時間複雜度可以小至o n 所以如果我們能夠讓資料量變小且變得接近 正序 然後用直接插入排序就好了。希爾排序就是做這麼個事情,它首先將資料拆成幾部分,即達到縮小資料規模排序,再將資料合併起來,達到整體的 正序 然而將資料的正序並非區域性的 正序 即不是 ...