希尔排序
过程:把数组根据某一增量分为若干子序列,对子序列分别进行插入排序。然后逐步将增量减小重复上述过程,直至增量为1,此时数组进本有序,最后执行插入排序。
public static void shellSort(int[] arr) {
int temp;
int len = arr.length;
int increate = len;
while(true) {
increate = increate/ 2;
for(int k = 0; k < increate; k++) { // 根据增量分为若干子序列
for(int i = k + increate; i < len; i += increate) {
for(int j = i; j > k; j -= increate) {
if(arr[j] < arr[j - increate]) {
temp = arr[j - increate];
arr[j - increate] = arr[j];
arr[j] = temp;
} else {
break;
}
}
}
}
if(increate == 1) {
break;
}
}
}
理解参考:
1、http://blog.csdn.net/pzhtpf/article/details/7559896
2、http://blog.csdn.net/jianyuerensheng/article/details/51258460
3、http://blog.csdn.net/zhqingyun163/article/details/8961396
4、http://www.cnblogs.com/hxsyl/p/3309615.html