資料結構演算法之希爾排序

2021-10-04 20:08:39 字數 957 閱讀 6755

希爾排序的最大間隔是利用公式 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 所以如果我們能夠讓資料量變小且變得接近 正序 然後用直接插入排序就好了。希爾排序就是做這麼個事情,它首先將資料拆成幾部分,即達到縮小資料規模排序,再將資料合併起來,達到整體的 正序 然而將資料的正序並非區域性的 正序 即不是 ...