本篇文章介紹希爾排序算法的JAVA實現。
希爾排序算法的基本思想是:先取一個小於n的整數d1作爲第一個增量,把文件的全部記錄分成d1個組。所有距離爲dl的倍數的記錄放在同一個組中。先在各組內進行直接插人排序;然後,取第二個增量d2<d1重複上述的分組和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有記錄放在同一組中進行直接插入排序爲止。該方法實質上是一種分組插入方法。
以下是希爾排序算法的JAVA代碼實現:
package cn.simon.sort; public class ShellSort { public static <T extends Comparable<? super T>> void shellSort(T[] array, int len) { int d = len; while (d > 1) { d = (d + 1) / 2; for (int i = 0; i < len - d; i++) { if (array[i + d].compareTo(array[i]) < 0) { T temp = array[i + d]; array[i + d] = array[i]; array[i] = temp; } } } } public static void main(String[] args) { Integer[] testArray = {23, 25, 12, 42, 35}; ShellSort.shellSort(testArray, 5); System.out.println("The result is:"); for (Integer item : testArray) { System.out.print(item); System.out.print(' '); } } }