shell排序(希尔排序(C++代码)) 1 #include<iostream>
2using namespace std;
3int pt[1000001];
4void shell(int*,int);
5void insert(int*,int,int,int);
6int main()            //shell排序
7 {
8int num,L,i=0;
9
10while(cin>>num)
11    {
12        pt[i++]=num;
13
()=='\n')  break;
15    }
16    L=i;
17
18    shell(pt,L);
19    insert(pt,0,1,L);      //易遗漏
20
21
22for(i=0;i<L;i++)
23        cout<<pt[i]<<"";
24 }
25
26void shell(int*pt,int n)        //shell排序
27 {
28for(int i=n/2;i>=2;i/=2)          //注意i=2(⽽课本上的没有(error))
29for(int j=0;j<i;j++)
30                insert(pt,j,i,n);
31 }
32
33
34void insert(int*pt,int left ,int gap,int n )
35 {
36int i,j,num;
37for( j=left+gap;j<n;j+=gap)
38
39for( i=j;i>left;i-=gap)
40if(pt[i-gap]>pt[i])
shell代码41          {
42            num=pt[i];pt[i]=pt[i-gap];pt[i-gap]=num;
43          }
44 }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。