面试宝典-希尔排序

 1 #include"iostream"
 2 #include"stdio.h"
 3 using namespace std;
 4 
 5 void ShellSort(int *data,int left,int right)
 6 {
 7     int len=right-left+1;
 8     int d=len;
 9     while(d<1)
10     {
11         d=(d+1)/2;
12         for(int i=left;i<right+1-d;i++)
13         {
14             if(data[i+d]<data[i])
15             {
16                 int tmp=data[i+d];
17                 data[i+d]=data[i];
18                 data[i]=tmp;
19             }
20         }
21     }
22 }
23 void ShellSort2(int *data,int len)
24 {
25     int d=len;
26     while(d>1)
27     {
28         d=(d+1)/2;
29         for(int i=0;i<len-d;i++)
30         {
31             if(data[i+d]<data[i])
32             {
33                 int tmp=data[i+d];
34                 data[i+d]=data[i];
35                 data[i]=tmp;
36             }
37         }
38         for(int i=0;i<10;i++)
39             printf("%5d",data[i]);
40         printf("\n");
41     }
42 }
43 
44 int main()
45 {
46     int list[10];
47     int n=9,m=0,i;
48     printf("input 10 numbers: \n");
49     for(int i=0;i<10;i++)
50         scanf("%d",&list[i]);
51     printf("\n");
52     ShellSort2(list,10);
53   //  ShellSort(list,0,9);
54     printf("\n");
55     for(int i=0;i<10;i++)
56         printf("%5d",list[i]);
57     printf("\n");
58 }
View Code

 

posted @ 2019-02-12 16:16  Run_For_Love  阅读(186)  评论(0编辑  收藏  举报