希尔排序是插入排序的提升,他的实质就是分组插入排序
它适用于数据量较大,和情况比较复杂的排序
希尔排序的核心就是提供一个增量来控制数组的分组和循环
public class Shell {
public static void main(String[] args) {
//创建对象
Shell shell=new Shell();
//调用方法
shell.sort();
}
/**
* 核心算法
*/
public void sort() {
int[] arr=new int[] {4,3,6,2,8,9,1,5,7};
int i,j,x;
int temp;
int gap=arr.length;
while(gap>1) {//当增量gap的值为1时推出循环
gap/=2;//增量gap的值按1/2倍缩小
for(i=0;i<gap;i++) {//分组
for(j=i;j<arr.length;j+=gap) {//进行插入排序
temp=arr[j];
for(x=j-gap;x>=0;x-=gap) {
if(temp<arr[x]) {
arr[x+gap]=arr[x];
}else {
break;//跳出循环
}
}
arr[x+gap]=temp;
}
}
}
//输出排序后的数组
for(i=0;i<arr.length;i++) {
System.out.print(arr[i]+"\t");
}
}
}
小白一个,可能想的复杂了…