ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:29.22KB ,
资源ID:15935084      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-15935084.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言所有内部排序算法.docx)为本站会员(b****7)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

C语言所有内部排序算法.docx

1、C语言所有内部排序算法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(请输入你要排序的

2、元素的个数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;

3、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_

4、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(%

5、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_

6、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#in

7、cludevoid 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

8、)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+;

9、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)

10、;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对应的叶子节

11、点就是,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

12、(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.基数排序(我写的这

13、个基数排序可能效率有点低,也肯能有点小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;i!=n;+i)count=0;k=ai;while(k0)m=k%10;k=k/10;count+;while(pcountm!=-999)if(pcountmai)temp=pcountm;pcountm=ai;ai=temp;elsem+;pcountm=ai;for(i=0;i!=10;i+) for(j=0;j!=10;j+) if(pij!=-999) printf(%d ,pij);

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2