#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n = 0;
int InsSort(int a[], int s, int h) {
int x = 0, j = 0;
for (int i = s; i < n; i += h) {
x = a[i];
for (j = i-h; j>=s && x<a[j]; j -= h) {
a[j+h] = a[j];
}
a[j+h] = x;
}
return 0;
}
int ShellSort(int a[]) {
int inrc = n;
do {
inrc = inrc/3+1;
for (int i = 0; i < inrc; i++) {
InsSort(a, i, inrc);
}
} while (inrc > 1);
return 0;
}
int main()
{
int a[] = {503, 87, 512, 61, 908, 170, 897, 275, 653, 426,
154, 509, 612, 677, 765, 703};
n = 16;
ShellSort(a);
for (int i = 0; i < n; i++) {
if (a[i] < 10) {
printf("00");
} else if (a[i] < 100) {
printf("0");
}
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
shell_sort
最新推荐文章于 2024-03-07 10:54:28 发布