Java資料結構之希爾排序

2021-08-15 16:49:14 字數 558 閱讀 6354

希爾排序借用了插入排序,演算法先將要排序的一組數按某個增量gap(n/2,n為要排序數的個數)分成若干組,每組中記錄的下標相差gap.對每組中全部元素進行直接插入排序,然後再用乙個較小的增量(gap/2)對它進行分組,在每組中再進行直接插入排序。當增量減到1時,進行直接插入排序後,排序完成。

class shellsort ;//待排序列

for (int item : arr)

system.out.println();

shellsort(arr);

for (int item : arr)

}public

static

void

shellsort(int arr) }}

}public

static

void

swap(int arr, int a, int b)

java資料結構之希爾排序

希爾排序也成為 縮小增量排序 其基本原理是,現將待排序的陣列元素分成多個子串行,使得每個子串行的元素個數相對較少,然後對各個子串行分別進行直接插入排序,待整個待排序列 基本有序 後,最後在對所有元素進行一次直接插入排序。因此,我們要採用跳躍分割的策略 將相距某個 增量 的記錄組成乙個子串行,這樣才能...

java資料結構排序之希爾排序實現

早上鮮血來潮想寫個希爾排序演算法,發現發生了錯誤,一直不解,最初寫的 如下所示 static void shellsort int datalist,int dk else datalist flag temp print datalist 想呼叫它試試,卻發現 錯誤原因在於紅色 注釋處的判斷條件,...

資料結構之希爾排序

直接插入排序在資料量較小而且接近 正序 的時候,時間複雜度可以小至o n 所以如果我們能夠讓資料量變小且變得接近 正序 然後用直接插入排序就好了。希爾排序就是做這麼個事情,它首先將資料拆成幾部分,即達到縮小資料規模排序,再將資料合併起來,達到整體的 正序 然而將資料的正序並非區域性的 正序 即不是 ...