思路分析
普通的交换式希尔排序算法的效率甚至比直接插入算法的效率还要低下,这就使得我们必须要对前者进行优化,移位式希尔算法就是来做这个的。
代码如下:
package com.shujujiegou;
import sun.awt.im.SimpleInputMethodWindow;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
public class Hello {
public static void main(String[] args) {
int arr[]=new int[]{8,9,1,7,2,3,5,4,6,0};
System.out.println("排序前的数组是:"+Arrays.toString(arr));
System.out.println("***************");
xuanze(arr);
System.out.println("***************");
System.out.println("排序后的数组是:"+Arrays.toString(arr));
}
public static void xuanze(int []arr){
for (int gap=arr.length/2;gap>0;gap/=2){
for (int i = gap; i <arr.length ; i++) {
int insertVal=arr[i];
int insertIndex=i-gap;
while (insertIndex>=0 && insertVal<arr[insertIndex]){
arr[insertIndex+gap]=arr[insertIndex];
insertIndex-=gap;
}
if(insertIndex+gap!=i){
arr[insertIndex+gap]=insertVal;
}
}
System.out.println(Arrays.toString(arr));
}
}
}
代码运行效果如下: