#include <cstdio>
int main() {
void ShellSort(int *a, int len);
const int MAXLEN = 10;
int a[MAXLEN] = {3, 8, 9, 1, 0, 2, 5, 7, 4, 6};
printf("befor sort:");
for(int i=0; i<MAXLEN; ++i) {
printf("%d ", a[i]);
}
putchar('\n');
ShellSort(a, MAXLEN);
printf("after sort:");
for(int i=0; i<MAXLEN; ++i) {
printf("%d ", a[i]);
}
putchar('\n');
return 0;
}
void ShellSort(int *a, int len) {
for (int d=len>>1; d>=1; d>>=1) {
for (int i=d; i<len; ++i) {
int k = i;
int tmp = a[i];
for (int j=i-d; j>=0 && a[j] > tmp; j-=d) {
a[j+d] = a[j];
k = j;
}
a[k] = tmp;
}
}
}
希尔排序
最新推荐文章于 2025-01-21 00:21:24 发布