希尔排序其实是一种改进的 直接插入排序:
package com.wjy.renren;
import java.util.Arrays;
public class ShellSort {
public static void main(String args[]){
int[] array={6,9,3,6,2,8,1,7,6,9};
shellSort(array);
}
private static void shellSort(int[] array){
int increment=array.length,pos=0,temp=0;
while(true){
increment=increment/2;
for(int i=0;i<increment;i++){
//其实以下部分就是直接插入排序
for(int j=i+increment;j<array.length;j+=increment){
pos=j-increment;
temp=array[j];
while(pos>=0&&(temp<array[pos])){
array[pos+increment]=array[pos];
pos-=increment;
}
array[pos+increment]=temp;
}
//其实以上部分就是直接插入排序
}
if(1==increment){
break;
}
}
System.out.println("ShellSort: "+Arrays.toString(array));
}
}