java希爾排序演算法實現

2021-08-09 21:57:30 字數 1039 閱讀 6916

希爾排序嚴格來說是基於插入排序的思想,又被稱為縮小增量排序。

具體流程如下:

1、將包含n個元素的陣列,分成n/2個陣列序列,第乙個資料和第n/2+1個資料為一對...

2、對每對資料進行比較和交換,排好順序;

3、然後分成n/4個陣列序列,再次排序;

4、不斷重複以上過程,隨著序列減少並直至為1,排序完成。

假如有初始資料:25  11  45  26  12  78。

1、第一輪排序,將該陣列分成 6/2=3 個陣列序列,第1個資料和第4個資料為一對,第2個資料和第5個資料為一對,第3個資料和第6個資料為一對,每對資料進行比較排序,排序後順序為:[25, 11, 45, 26, 12, 78]。

2、第二輪排序 ,將上輪排序後的陣列分成6/4=1個陣列序列,此時逐個對資料比較,按照插入排序對該陣列進行排序,排序後的順序為:[11, 12, 25, 26, 45, 78]。

對於插入排序而言,如果原陣列是基本有序的,那排序效率就可大大提高。另外,對於數量較小的序列使用直接插入排序,會因需要移動的資料量少,其效率也會提高。因此,希爾排序具有較高的執行效率。

希爾排序並不穩定,o(1)的額外空間,時間複雜度為o(n*(logn)^2)

public class main ;

//設定縮減段

for(int i=data.length/2;i>0;i=i/2)

} }  

} for(int i=0;i  system.out.print(data[i]+" ");//排序後的列印輸出

}   }

}

希爾排序演算法Java實現

希爾排序演算法是插入排序的一種改進,希爾排序將陣列的下標按照一定的增量排序,將乙個陣列分成幾個部分,對其中各個部分都只用使用插入排序的思想,當在當前增量情況下各個部分排序完成,則按照一定規則縮小增量,直至增量為一時,陣列就只有乙個部分,完成這部分的排序即可完成陣列的排序。增量選取無硬性要求,在這裡增...

排序演算法(四) JAVA實現希爾排序

希爾排序是時間複雜度突破o n2 的最早的一批演算法之一,它是直接插入排序的公升級版。思想 由於直接插入排序在待排序列基本有序的情況下效率是很高的,但是在實際情況中,很少能滿足基本有序。希爾排序就是要為直接插入排序創造基本有序的條件。過程 以為例 要確認分組的條件,即確認乙個增量increment。...

排序演算法之希爾排序 java實現

希爾排序 在直接插入排序的基礎上進行的優化,直接插入排序在n值小的時候效率比較高,在n很大的時候如果待排序序列基本有序,效率依然很高,時間效率可以提公升為o n 希爾排序也稱之為縮小增量排序。1.先選取乙個小於n的整數d 步長 然後按照步長d將待排序序列分為d組,從第乙個記錄開始間隔為d的為乙個組。...