希尔排序

来源:互联网 发布:淘宝店铺怎么商品分类 编辑:程序博客网 时间:2024/05/20 11:50
#include<stdio.h>   //希尔排序法   //希尔排序法又称缩小增量法,属于插入类排序,是将整个无序子序列分别进行插入排序的方法   //先取一个整数d1<n,把所有序号相隔d1的数组元素放一组,组内进行直接插入排序;然后取d2<d1   //重复上述分组和排序操作;直至di=1.即所有记录放进一个组中排序为止   void shsort(int s[],int n)   //自定义函数shsort   {       int i,j,k,d;       d=n/2;         //确定固定增量值       while(d>=1)       {           for(i=d+1;i<=n;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;        //向左移动固定增量的位置               }               s[j+d]=s[0];    //在确定的位置插入s[i]               //测试               printf("输出中间结果:\n");               for(k=1;k<=10;k++)                   printf("%5d",s[k]);               printf("\n");           }           d=d/2;       }    }   void main()   {       int a[11],i;       printf("请输入10个整数:\n");       for(i=1;i<=10;i++)          scanf("%d",&a[i]);  //从键盘中输入十个数据       shsort(a,10);       printf("排序后的顺序是:\n");       for(i=1;i<=10;i++)          printf("%5d",a[i]);       printf("\n");   }
1 0
原创粉丝点击