已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言 所有内部排序算法 冒泡法,选择法,插入法,快排法,希尔,归并,. 1冒泡法:#include#includevoid mao_pao(int *a,int n)int i,j,temp,flag;for(i=0;in-1&flag;+i)flag=0;for(j=0;jaj+1) flag=1; temp=aj; aj=aj+1; aj+1=temp; void main()int *a,i,n;a=(int *)malloc(100);if(NULL=a) printf(allocation failturen); exit(1);printf(请输入你要排序的元素的个数n);scanf(%d,&n);printf(现在开始输入%d个元素n,n);for(i=0;i!=n;+i)scanf(%d,&ai);mao_pao(a,n);printf(排序后为:n);for(i=0;i!=n;+i)printf(%d ,ai);printf(n);free(a);2,选择排序法#include#includevoid xuan_zhe(int *a,int n)int i,j,temp,max;for(i=0;in-1;+i)max=i;for(j=i+1;jn;+j) if(ajamax) max=j;if(i!=max)temp=ai;ai=amax;amax=temp;void main()int *a,i,n;a=(int *)malloc(100);if(NULL=a) printf(allocation failturen); exit(1);printf(请输入你要排序的元素的个数n);scanf(%d,&n);printf(现在开始输入%d个元素n,n);for(i=0;i!=n;+i)scanf(%d,&ai);xuan_zhe(a,n);printf(排序后为:n);for(i=0;i!=n;+i)printf(%d ,ai);printf(n);free(a);3,插入排序#include#includevoid cha_ru(int *a,int n)int i,j,temp;for(i=0;i=0&tempaj;-j)aj+1=aj;a+j=temp;void main()int *a,i,n;a=(int *)malloc(100);if(NULL=a) printf(allocation failturen); exit(1);printf(请输入你要排序的元素的个数n);scanf(%d,&n);printf(现在开始输入%d个元素n,n);for(i=0;i!=n;+i)scanf(%d,&ai);cha_ru(a,n);printf(排序后为:n);for(i=0;i!=n;+i)printf(%d ,ai);printf(n);free(a);4.快速排序#include#includevoid kuai_pai(int *a,int low,int high)int left,right,middle,i,j,temp;left=low;right=high;middle=(left+right)/2;while(leftright)while(lefthigh&aleftlow&arightamiddle) right-;if(left=right)temp=aleft;aleft=aright;aright=temp;left+;right-;if(leftlow) kuai_pai(a,low,right);void main()int *a,i,n;a=(int *)malloc(100);if(NULL=a) printf(allocation failturen); exit(1);printf(请输入你要排序的元素的个数n);scanf(%d,&n);printf(现在开始输入%d个元素n,n);for(i=0;i!=n;+i)scanf(%d,&ai);kuai_pai(a,0,n-1);printf(排序后为:n);for(i=0;i!=n;+i)printf(%d ,ai);printf(n);free(a);5.shell排序#include#includevoid shell(int *a,int n)int gap,i,j,temp;for(gap=n/2;gap0;gap=gap/2)for(i=gap;i=0&ajaj+gap;j=j-gap)temp=aj;aj=aj+gap;aj+gap=temp;void main()int *a,i,n;a=(int *)malloc(100);if(NULL=a) printf(allocation failturen); exit(1);printf(请输入你要排序的元素的个数n);scanf(%d,&n);printf(现在开始输入%d个元素n,n);for(i=0;i!=n;+i)scanf(%d,&ai);shell(a,n);printf(排序后为:n);for(i=0;i!=n;+i)printf(%d ,ai);printf(n);free(a);6.二路归并排序#include#includevoid gui_bin(int *a,int *b,int k,int n)int l1,l2,i,j,u1,u2,l=0;l1=0;while(l1+kn) l2=l1+k; u1=l2-1; u2=(l2+k-1n)?l2+k-1:n-1; i=l1; j=l2; while(i=u1&j=u2) if(ai=aj) bl+=ai+; else bl+=aj+; while(i=u1) bl+=ai+; while(j=u2) bl+=aj+; l1=u2+1;for(i=l1;in;+i) bl+=ai;void main()int *a,*b,i,n,k=1;a=(int *)malloc(100);if(NULL=a) printf(allocation failturen); exit(1);b=(int *)malloc(100);if(NULL=b) printf(allocation failturen); exit(1);printf(请输入你要排序的元素的个数n);scanf(%d,&n);printf(现在开始输入%d个元素n,n);for(i=0;i!=n;+i)scanf(%d,&ai);while(kn)gui_bin(a,b,k,n);for(i=0;in;+i) ai=bi;k=k*2;printf(排序后为:n);for(i=0;i!=n;+i)printf(%d ,ai);printf(n);free(a);free(b);7.堆排序思想是,跟节点都比他们的儿子节点都大,之后从第一个非叶子节点开始到最上的跟节点,依次求其的跟节点,最上的根节点就是值最大的点,这样取得最大值之后,继续求根节点,就能得到一个有序序列。这里要数以的是因为所有节点都在数组里保存,又因为数组的下标是从0开始的,因此跟节点i对应的叶子节点就是,2*I+1和2*I+2,而第一个非叶子节点是(n-2)/2.#include#includevoid dui_paixue(int *a,int n,int m)int i,j,l,temp;i=m;j=2*i+1;temp=ai;while(jn)if(jn-1&ajaj+1) j+;if(aj=0;i-)dui_paixue(a, n, i);void main()int *a,*b,i,j,temp,n,k=1;a=(int *)malloc(100);if(NULL=a) printf(allocation failturen); exit(1);b=(int *)malloc(100);if(NULL=b) printf(allocation failturen); exit(1);printf(请输入你要排序的元素的个数n);scanf(%d,&n);printf(现在开始输入%d个元素n,n);for(i=0;i!=n;+i)scanf(%d,&ai);dui(a,n);for(j=n-1;j=0;-j) temp=a0; a0=aj; aj=temp; dui_paixue( a, j, 0);printf(排序后为:n);for(i=0;i!=n;+i)printf(%d ,ai);printf(n);free(a);free(b);8.基数排序(我写的这个基数排序可能效率有点低,也肯能有点小BUG,等着以后改进吧)#include#include#define max 10void main()int p1010;int amax,i,j,m,n,k,count,flag=1,temp;for(i=0;i!=10;+i) for(j=0;j!=10;+j) pij=-999;printf(请输入你要输入的元素的个数n);scanf(%d,&n);printf(请输入%d个元素n,n);for(i=0;i!=n;+i)scanf(%d,&ai);for(i=0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年成都农业科技职业学院单招综合素质笔试参考题库含详细答案解析
- 2026年桂林生命与健康职业技术学院单招综合素质笔试模拟试题含详细答案解析
- 2026年安庆师范大学单招职业技能考试备考题库含详细答案解析
- 2026年新疆能源职业技术学院单招综合素质笔试备考题库含详细答案解析
- 2026年江西传媒职业学院单招综合素质考试参考题库含详细答案解析
- 2026年重庆建筑工程职业学院单招综合素质考试参考题库含详细答案解析
- 2026年江苏卫生健康职业学院单招职业技能考试参考题库含详细答案解析
- 2026年宁德师范学院单招综合素质笔试备考试题含详细答案解析
- 2026年湖北工程职业学院单招综合素质考试模拟试题含详细答案解析
- 2026年广东食品药品职业学院单招职业技能考试参考题库含详细答案解析
- 2025湖南银行笔试题库及答案
- 广东省佛山市顺德区2026届高一数学第一学期期末检测模拟试题含解析
- 新河北省安全生产条例培训课件
- 【初高中】【假期学习规划】主题班会【寒假有为弯道超车】
- 铁路声屏障施工方案及安装注意事项说明
- 2026年及未来5年市场数据中国超细铜粉行业发展趋势及投资前景预测报告
- (新教材)2026年人教版八年级下册数学 21.2.2 平行四边形的判定 21.2.3 三角形的中位线 课件
- 继承农村房屋协议书
- 2025-2026学人教版八年级英语上册(全册)教案设计(附教材目录)
- 台球竞业协议书范本
- 湖南公务员考试申论试题(行政执法卷)1
评论
0/150
提交评论