/**
* 一般的,我们把A[0]元素空置,其目的是为了方便遍历
* 这时需要注意的是 数组长度 = 元素个数 所以循环时候要带上“=”号
* */
void shellSort(int A[], int n) {
int i, j;
for (int step = n / 2; step >= 1; step = step / 2) { // 每次排序的步长
for (i = step + 1; i <= n; ++i) {
if (A[i] < A[i - step]) { // 将A[i]插入有序增量子表
A[0] = A[i];
// 从后往前遍历,将A[i]所需要插入的位置空出来
for (j = i - step; j > 0 && A[0] < A[j]; j-=step) {
A[j + step] = A[j];
}
A[j + step] = A[0];
}
}
}
// TODO: 这里需要将A[0]进行初始化 A[0] = null;
}
C++实现希尔排序
最新推荐文章于 2024-08-27 16:15:26 发布