/*
*希尔排序思路:
* 1.初始 开始分组,分组个数为length/2,排完序后,再上次分组数除2,最后分为1组
* 2.每次分组进行直接排序,将小的放前,大的放后面
* 3.最后一次分组 整组比较,然后排序
*
* 属于一种插入排序,也叫缩小增量排序
* */
import java.util.Arrays;
public class ShellSort {
public static void main(String[] args) {
int [] arr = {8,97,10,15,18,51,0,-4,34};
int temp = 0;
int count = 0;
for (int gap = arr.length; gap >0 ; gap/=2) {//gap为分组数,控制轮次
for (int i = gap; i
for(int j=i-gap;j>=0;j-=gap){
if(arr[j]>arr[j+gap]){//大的放后,大的放前
temp = arr[j];
arr[j] = arr[j+gap];
arr[j+gap] = temp;
}
}
}
System.out.println("希尔排序第"+(++count)+"轮="+ Arrays.toString(arr));
}
}
}
如果有错,欢迎指出。
如果是有不懂的,大家一起探讨。 -----梁氏