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小时内删除。
发表评论