希爾排序算法的基本思想是:先取一個小于n的整數(shù)d1作為第一個增量,把文件的全部記錄分成d1個組。所有距離為dl的倍數(shù)的記錄放在同一個組中。先在各組內(nèi)進(jìn)行直接插人排序;然后,取第二個增量d2<d1重復(fù)上述的分組和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有記錄放在同一組中進(jìn)行直接插入排序為止。該方法實質(zhì)上是一種分組插入方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
//帶增量的插入排序 public static void shellSort( int [] array) { int len = array.length; int h = 1 ; while (h < len) h = h * 3 + 1 ; while (h >= 1 ) { for ( int i = 1 ; i < len; i++) { for ( int j = i; j >= h; j = j - h) { if (array[j] < array[j - h]) { Sort.swap(array, j, j - h); //交換j和j-h } else break ; } } h = h / 3 ; } } |
希爾排序示意圖
以上所述就是本文的全部內(nèi)容了,希望能夠?qū)Υ蠹沂炀氄莆誮ava希爾排序有所幫助。