希尔排序介绍
希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。
希尔排序基本思想
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。
下面结合一组数据描述希尔排序的过程
![第三次分组(最后一次),只需要很少的移动就可以完成最终的排序](https://img-blog.csdnimg.cn/20191013182134465.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2N6eWRyZWFt,size_16,color_FFFFFF,t_70#pic_center)
代码实现
/**
* @author chenzhiyuan
* @date 2019-09-04 21:05
*/
public class ShellSort {
public static void main(String[] args) {
int[] nums = new int[]{
10, 2, 11, 56, 0, 8, 90, 22, 1, 66};
for (int num : nums) {
System.out.print(num + "\t");
}
System.out.println();
shellSort(nums);
for (int num