希尔排序
/**
* 希尔排序
* Created by xueping.you on 15-8-18.
*/
public class DonaldShellSort {
private final static Logger logger = LoggerFactory.getLogger(DonaldShellSort.class);
public static void donaldShellSort(int []arr){
for(int step=arr.length/2; step>0; step/=2){
for (int index=step; index<arr.length; index++){
int temp = arr[index];
int i = index;
for(int j=index-step; j>=0; j-=step){ //对按照步长分割出来的子串做插入排序
if(arr[j]>temp){
arr[i] = arr[j];
arr[j] = temp;
i=j;
}
}
}
}
}
public static void main(String []args){
int [] array = new int[]{12,10,2,45,31,56,1,9};
logger.info("before:{}", array);
donaldShellSort(array);
logger.info("after:{}",array);
}
}
result:
20:18:37.765 [main] INFO c.q.data.arithmetic.DonaldShellSort - before:[12, 10, 2, 45, 31, 56, 1, 9]
20:18:37.782 [main] INFO c.q.data.arithmetic.DonaldShellSort - after:[1, 2, 9, 10, 12, 31, 45, 56]