不晓得哪个

shell排序

 1 #include<stdio.h>
 2 #include<time.h>
 3 #define MAX 20
 4 #define RANDOM(x) rand()%x
 5 void shell_sort(int *arr,int n)
 6 {
 7     
 8     int i,j,k,temp,gap;
 9     int gaps[]={1,4,13,100,301,};
10     for(k=0;gaps[k]<n;k++);
11     while(--k>=0)
12     {
13         gap=gaps[k];
14         for(i=gap;i<n;i++)
15         {
16             temp=arr[i];
17             j=i;
18             while(arr[j-gap]>temp&&j>=gap)
19             {
20                 arr[j]=arr[j-gap];
21                 j=j-gap;
22             }
23             arr[j]=temp;
24         }
25     }
26 }
27 int main()
28 {
29     int arr[MAX];
30     int i;
31     srand(time(0));
32     for(i=0;i<MAX;i++)
33     {
34         arr[i]=RANDOM(100);
35         printf("%d ",arr[i]);
36     }
37 printf("\n");
38     shell_sort(arr,MAX);
39     for(i=0;i<MAX;i++)
40     {
41         printf("%d ",arr[i]);
42     }
43 printf("\n");
44 }

posted on 2009-12-07 17:53 缘分游走 阅读(402) 评论(0)  编辑 收藏 引用 所属分类: 算法基础


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理