希爾排序演算法的基本想法是:先取一個小於n的整數d1作為第一個增量,把檔案的全部記錄分成d1個組。所有距離為dl的倍數的記錄放在同一個組別中。先在各組內進行直接插人排序;然後,取第二個增量d2<d1重複上述的分組和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1 ),即所有記錄放在同一組中進行直接插入排序為止。此方法實質上是一種分組插入法。
//帶增量的插入排序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和jh } else break; } } h = h / 3; } }
希爾排序示意圖
以上所述就是本文的全部內容了,希望能對大家熟練java希爾排序有所幫助。