排序算法一希尔排序
概述
插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。
希尔排序是非稳定排序算法。
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 版权协议,转载请附上原文出处链接和本声明。