用希尔排序法对一组数据从小到大进行排序
#include<stdio.h>
//自定义函数short(),实现希尔排序
void shsort(int s[],int n){
int i,j,d;
d=n/2;//确定固定增量值
while(d>=1){
for(i=d+1;i<=10;i++){//数组从下标为d+1开始进行直接插入排序
s[0]=s[i];//设置监视哨
j=i-d;//确定要比较的元素在右边
while(j>0&&s[0]<s[j]){
s[j+d]=s[j];//数据右移
j=j-d;//向左移动d个位置
}
s[j+d]=s[0];//在确定的位置插入s[i]
}
d=d/2;//增量变为原来的一半
}
}
void main(){
int a[11],i;
printf("请输入10个整数:\n");
for(i=1;i<11;i++){
scanf("%d",&a[i]);
}
shsort(a,10);//调用shsort()函数
printf("排序后的顺序是:\n");
for(i=1;i<11;i++){
printf("%5d",a[i]);
}
}