基本思想
将整个无序列分割成若干小的子序列分别进行插入排序的方法
希尔排序是把元素按下标的一定增量进行分组,对每组使用直接插入排序算法排序。随着增量逐渐减少,当增量减至 1 时,整个文件恰被分成一组,算法便终止。
图解
代码实现
int[] arrays = new int[] {1,5,2,3,6,9,4,0,1}; //实现增量的变化 for(int gap = arrays.length / 2; gap > 0; gap /= 2) { for(int i = gap; i < arrays.length; i++) { for(int j = i - gap; j >= 0; j -= gap) { if(arrays[j] > arrays[j + gap]) { int temp = arrays[j]; arrays[j] = arrays[j + gap]; arrays[j + gap] = temp; } } } } System.out.println(Arrays.toString(arrays));