码迷,mamicode.com
首页 > 编程语言 > 详细

4.7 希尔(shell)排序法

时间:2016-07-19 09:25:56      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

4-7 ShellSort.c

 1 #include <stdio.h>
 2 #include "4-1 CreateData.c"    //生成随机数的函数
 3 #define ARRAYLEN 10    //需要排序的数据元素数量
 4 void ShellSort(int a[],int n)//希尔排序 
 5 {
 6     int d,i,j,x;
 7     d=n/2;
 8     while(d>=1) //循环至增量为1时结束 
 9     {
10         for(i=d;i<n;i++)
11         {
12             x=a[i]; //获取序列中的下一个数据 
13             j=i-d; //序列中前一个数据的序号 
14             while(j>=0 && a[j]>x) //下一个数大于前一个数 
15             {
16                 a[j+d]=a[j]; //将后一个数向前移动 
17                 j=j-d; //修改序号,继续向前比较 
18             }
19             a[j+d]=x; //保存数据 
20         }
21         d/=2;  //缩小增量 
22     }
23 }
24 int main()
25 {
26     int i,a[ARRAYLEN];    //定义数组
27     for(i=0;i<ARRAYLEN;i++)    //清空数组
28         a[i]=0;
29     if(!CreateData(a,ARRAYLEN,1,100))    //判断生成随机数是否成功
30     {
31         printf("生成随机数不成功!\n");
32         getch();
33         return 1;
34     }
35     printf("原数据:");     //输出生成的随机数
36     for(i=0;i<ARRAYLEN;i++)
37         printf("%d ",a[i]);
38     printf("\n");
39     ShellSort(a,ARRAYLEN);    //调用希尔排序函数
40     printf("排序后:"); 
41     for(i=0;i<ARRAYLEN;i++)    //输出排序后的结果
42         printf("%d ",a[i]);
43     printf("\n");
44     getch();
45     return 0;   
46 }

 

4.7 希尔(shell)排序法

标签:

原文地址:http://www.cnblogs.com/wozixiaoyao/p/5683160.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!