1、输入N和N个整数关键字;
2、完成希尔排序,并输出排序结果,输出结果每个关键字之间用一个空格分隔。
例如:
【输入】
7
4 2 6 1 8 9 3
【输出】
1 2 3 4 6 8 9
#include <stdio.h>
#include <stdlib.h>
void ShellSort(int a[], int n) {
int i, j, d;
d = n / 2;
while(d >= 1) {
for(i = d + 1; i <= n; i++)
if(a[i] < a[i - d]) {
a[0] = a[i];
for(j = i - d; j > 0 && a[0] < a[j]; j = j - d)
a[j + d] = a[j];
a[j + d] = a[0];
}
d = d / 2;
}
}
int main()
{
int *a, i, n;
scanf("%d", &n);
a = (int *)malloc(n*sizeof(int));
for(i = 1; i <= n; i++)
scanf("%d", &a[i]);
ShellSort(a, n);
for(i = 1; i <= n; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}