设为首页 收藏本站
查看: 740|回复: 0

[经验分享] 排序

[复制链接]

尚未签到

发表于 2017-7-4 21:36:56 | 显示全部楼层 |阅读模式
1 /*1)    请编写插入排序程序。
  2 2)    请编写选择排序程序。
  3 3)    请编写冒泡排序程序。*/
  4
  5 #include<stdio.h>
  6 #include<stdlib.h>
  7
  8 #define  swap(a,b,c)  (c = a,a = b,b=c)
  9 void insert(int *p,int N);
10
11 void choose(int *p,int N);
12
13 void buble(int *p,int N);
14
15 void quick (int *p,int left,int right);
16
17 void shuchu(int *p,int N);
18
19 int main()
20 {
21     int N;
22     int i;
23     int *p;
24     scanf("%d",&N);
25
26     
27     p =(int *) malloc(sizeof(int )*N);
28     for(i = 0;i<N;i++)
29         scanf("%d",p+i);
30
31
32     insert(p,N);
33
34     shuchu(p,N);
35
36     choose(p,N);
37
38     shuchu(p,N);
39
40     buble(p,N);
41
42     shuchu(p,N);
43
44     quick(p,0,N-1);
45
46     shuchu(p,N);
47     return 0;
48 }
49
50 void insert(int *p,int N)
51 {
52     int i,j;
53
54     int t;
55
56
57     for(i = 0;i<N;i++)
58     {   
59         int min = 1000;
60         int leap = -1;
61
62         for(j = i;j<N;j++)
63         {
64             if(p[j]<min)
65             {
66                 leap = j;
67                 min = p[j];
68             }
69         }
70         swap(p,p[leap],t);
71     }
72 }
73 void choose(int *p,int N)
74 {
75     int i,j;
76     int leap ;
77
78     for(i = 2;i<N;i++)
79     {
80         if(p<p[i-1])
81         {
82         leap = p;
83         for(j = i-1;j>0&&leap<p[j];j--)
84         {
85             if(leap<p[j])
86             {
87                 p[j+1]=p[j];
88             }
89         }
90         p[j+1] = leap;
91         }
92     }
93 }
94
95
96 void buble(int *p,int N)
97 {
98     int i,j;
99     int leap;
100     int exchange = 1;
101
102     for(i = 0;i<N-1&&exchange==1;i++)
103     {
104         for(j = 0;j<N-i-1;j++)
105         {
106             if(p[j]>p[j+1])
107             {
108                 swap(p[j],p[j+1],leap);
109                 exchange = 0;
110             }
111         }
112     }
113 }
114
115 void quick(int *p,int left,int right)
116 {
117     int i,j;
118     int n;
119     int leap;
120     if(left>right)
121         return ;
122
123     i = left;
124     j = right;
125     leap = p[left];
126     while(i<j)
127     {
128         while(i<j&&p[j]>=leap)
129             j--;
130         while(i<j&&p<=leap)
131             i++;
132         if(i!=j)
133             swap(p,p[j],n);
134     }
135     swap(p[j],leap,n);
136
137     quick(p,left,i-1);
138     quick(p,j+1,right);
139 }
140
141 void shuchu(int *p,int N)
142 {
143     int i;
144     for(i = 0;i<N;i++)
145         printf("%4d",p);
146     printf("\n");
147 }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-390783-1-1.html 上篇帖子: POJ-2240 Arbitrage( 最短路 ) 下篇帖子: UVA 315 求割点 模板 Tarjan
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表