【c语言基本例题总结】
问题描述
希尔排序
代码
#include<stdio.h>
#define N 1001
void ShellSort(int a[],int n);
int main(void) {
int n;
int a[N];
scanf("%d",&n);
for(int i=1; i<=n; i++) {
scanf("%d",&a[i]);
}
ShellSort(a,n);
for(int i=1; i<=n; i++) {
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
void ShellSort(int a[],int n) {
int i,j;
for(int dk=n/2; dk>=1; dk=dk/2) {
for(i=dk+1; i<=n; i++) {
if(a[i]<a[i-dk]) {
a[0]=a[i];
for(j=i-dk; j>0 && a[0]<a[j]; j=j-dk) {
a[j+dk]=a[j];
}
a[j+dk]=a[0];
}
}
}
}