这篇文章讲八种排序方法中的希尔排序,这种排序属于插入排序的范畴。
希尔排序:
原理:又称增量缩小排序。先将序列按增量划分为元素个数相同的若干组,使用直接插入排序法进行排序,然后不断缩小增量直至为1,最后使用直接插入排序完成排序。
要点:增量的选择以及排序最终以1为增量进行排序结束。
实现:
public static void ShellSort(int L[]) {
int d = L.length;
while (d >= 1) {// 直到增量缩小为1
Shell(L, d);
d = d / 2;// 缩小增量
}
}
public static void Shell(int L[], int d) {
int i, j;
System.out.println(d);
for (i = d; i < L.length; i++) {
if (L[i] < L[i - d]) {
int temp = L[i];
j = i - d;
while (j >= 0 && L[j] > temp) {
L[j + d] = L[j];// 移动
j = j - d;// 查找
}
L[j + d] = temp;
}
}
}
这两种方法都属于插入排序的范畴,不是太难理解,看代码就可以知道了。