概述

插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。

希尔排序是非稳定排序算法。

 

 1 class ShallSort {
 2     public void sort() {
 3         int[] arr = {1,2,5,1,4,2,12};
 4 
 5         //增量
 6         int flag = arr.length;
 7         while (flag>1){
 8             //获取增量间隔,递减
 9             flag=flag/3+1;
10             //交叉排序:所有组交叉一起排序
11             for(int i=flag;i<arr.length;i++){
12                 //每组排序细节:
13                 //从后向前排序
14                 int temp = arr[i];
15                 int j =i;
16                 //快速排序:
17                 //第一次两个之间排序,使之有序
18                 //第二次三个之间排序,使之有序
19                 //第三次四个之间排序,使之有序
20                 //类推
21                 while ( j-flag>=0 && arr[j-flag]>temp){
22                     //大数放后面
23                     arr[j]=arr[j-flag];
24                     j-=flag;
25                 }
26                 arr[j]=temp;
27             }
28         }
29     }
30

版权声明:本文为loveer原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/loveer/p/11266566.html