基本定义:
希尔排序法(缩小增量法) 属于插入类排序,是将整个无序列分割成若干小的子序列分别进行插入排序的方法。
代码1:
/**
* 希尔排序
* 对相隔d位置的元素组进行直接插入排序
* @param A
*/
public static void shellSort1(int A[]) {
//对照直接插入 对比哈
int i, j, d, temp;
d = A.length / 2;//d为增量
while (d > 0) {
for (i = d; i < A.length; i++) {
//对相隔d位置的元素组进行直接插入排序
temp = A[i];
j = i - d;
while (j >=0 && temp < A[j]) {
A[j + d] = A[j];
j = j - d;
}
A[j + d] = temp;
}
d = d / 2;//减少增量
}
}
代码2:
public static void ShellSort(int A[]) {
//对比直接插入的区别
int i, j, d, temp;
//开始d增量 循环 逐渐缩小增量d 直到d为1
for (d = A.length / 2; d > 0; d = d / 2) {
for (i = d; i < A.length; i++) {
temp = A[i];
for (j = i; j >=d && A[j - d] > temp; j -= d) {
A[j] = A[j - d];
}
A[j] = temp;
}
}
}
结束语:
路漫漫其修远兮 吾将上下而求索