#include <stdio.h>
#define N 10
int main()
{
int i, j, k, tmp;
int F[N];
//保证增量为奇数
(N/2)%2==0 ? k=N/2+1 : k=N/2;
for (i=0; i<N; i++)
scanf("%d", &F[i]);
while (k>0) {
for (j=k; j<N; j++) {
tmp = F[j];
i = j - k;
while (i>=0 && F[i]>tmp) {
F[i+k] = F[i];
i = i - k;
}
F[i+k] = tmp;
}
if (k==1) break;
(k/2)%2==0 ? k=k/2+1 : k=k/2;
}
for (i=0; i<10; i++)
printf("%d ", F[i]);
printf("\n");
return 0;
}
常见排序-希尔排序
最新推荐文章于 2024-06-04 00:42:18 发布