插入排序:1、希尔排序
先确定增长量,利用增长量分组,分别进行插入排序,最后再一起排序。
class ShellSort {
public void ShellSort(int[] arry){
//确定增长量
int h=1;
while(h<arry.length/2){
h=2*h+1;
}
while(h>=1){
//找到带插入的元素
for(int i=h;i<arry.length;i++){
//将带插入的元素插入数组
for(int j=i;j>=h;j-=h){
//判断是否需要交换
if(arry[j-h]>arry[j]) {
int temp = arry[j];
arry[j] = arry[j - h];
arry[j - h] = temp;
//如果是合适的位置,则退出循环
}else{
break;
}
}
}
//修改增长量的值
h=h/2;
}//输出
for(int i=0;i<arry.length;i++){
System.out.println(arry[i]);
}
}
public static void main(String[] args) {
int[] a={1,2,5,4,8,7,5,9};
ShellSort b1=new ShellSort();
b1.ShellSort(a);
}
}