排序算法一希尔排序

欢迎光临我的博客[http://poetize.cn],前端使用VUE2,聊天室使用VUE3,后台使用Spring Boot

 

 


 

 

概述

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

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

 

 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
posted @ 2019-07-29 21:22  LittleDonkey  阅读(153)  评论(0编辑  收藏  举报