




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为Word版,下载可任意编辑——C语言中三种常见排序算法分析C语言中三种常见排序算法分析
C语言的设计目标是供给一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。那么C语言中三种常见排序算法的分析处境是怎样的呢。以下仅供参考!
一、冒泡法(起泡法)
算法要求:用起泡法对10个整数按升序排序。
算法分析:假设有n个数,那么要举行n-1趟对比。在第1趟对比中要举行n-1次相邻元素的两两对比,在第j趟对比中要举行n-j次两两对比。对比的依次从前往后,经过一趟对比后,将最值沉底(换到结果一个元素位置),最大值沉底为升序,最小值沉底为降序。
算法源代码:
#include
main
inta[10],i,j,t;
printfPleaseinput10numbers:;
/*输入源数据*/
fori=0;i10;i++
scanf%d,a[i];
/*排序*/
forj=0;j9;j++/*外循环操纵排序趟数,n个数排n-1趟*/
fori=0;i9-j;i++/*内循环每趟对比的次数,第j趟对比n-j次*/
ifa[i]a[i+1]/*相邻元素对比,逆序那么交换*/
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
/*输出排序结果*/
printfThesortednumbers:;
fori=0;i10;i++
printf%d,a[i];
printf;
算法特点:相邻元素两两对比,每趟将最值沉底即可确定一个数在结果的位置,确定元素位置的依次是从后往前,其余元素可能作相对位置的调整。可以举行升序或降序排序。
算法分析:定义n-1次循环,每个数字对比n-j次,对比前一个数和后一个数的大小。然后交换依次。
二、选择法
算法要求:用选择法对10个整数按降序排序。
算法分析:每趟选出一个最值和无序序列的第一个数交换,n个数共选n-1趟。第i趟假设i为最值下标,然后将最值和i+1至结果一个数对比,找出最值的下标,若最值下标不为初设值,那么将最值元素和下标为i的元素交换。
算法源代码:
#include
main
inta[10],i,j,k,t,n=10;
printfPleaseinput10numbers:;
fori=0;i10;i++
scanf%d,a[i];
fori=0;in-1;i++/*外循环操纵趟数,n个数选n-1趟*/
k=i;/*假设当前趟的第一个数为最值,记在k中*/
forj=i+1;jn;j++/*从下一个数到结果一个数之间找最值*/
ifa[k]a[j]/*若其后有比最值更大的*/
k=j;/*那么将其下标记在k中*/
ifk!=i/*若k不为最初的i值,说明在其后找到比其更大的数*/
t=a[k];a[k]=a[i];a[i]=t;/*那么交换最值和当前序列的第一个数*/
printfThesortednumbers:;
fori=0;i10;i++
printf%d,a[i];
printf;
算法特点:每趟是选出一个最值确定其在结果序列中的位置,确定元素的位置是从前往后,而每趟最多举行一次交换,其余元素的相对位置不变。可举行降序排序或升序排序。
算法分析:定义外部n-1次循环,假设第一个为最值,放在参数中,在从下一个数以后找最值若后面有比前面假设的最值更大的就放在k中,然后在对k举行分析。若k部位最初的i值。也就是假设的i不是最值,那么就交换最值和当前序列的第一个数
三、插入法
算法要求:用插入排序法对10个整数举行降序排序。
算法分析:将序列分为有序序列和无序列,依次从无序序列中取出元素值插入到有序序列的适合位置。初始是有序序列中只有第一个数,其余n-1个数组成无序序列,那么n个数需进n-1次插入。探索在有序序列中插入位置可以从有序序列的结果一个数往前找,在未找到插入点之前可以同时向后移动元素,为插入元素打定空间。
算法源代码:
#include
main
inta[10],i,j,t;
printfPleaseinput10numbers:;
fori=0;i10;i++
scanf%d,a[i];
fori=1;i10;i++/*外循环操纵趟数,n个数从第2个数开头到结果共举行n-1次插入*/
t=a[i];/*将待插入数暂存于变量t中*/
forj=i-1;j=0ta[j];j--/*在有序序列(下标0~i-1)中探索插入位置*/
a[j+1]=a[j];/*若未找到插入位置,那么当前元素后移一个位置*/
a[j+1]=t;/*找到插入位置,完成插入*/
printfThesortednumbers:;
fori=0;i10;i++
printf%d,a[i];
printf;
算法特点:每趟从无序序列中取出第一个数插入到有序序列的适合位置,元素的最终位置在结果一趟插入后才能确定位置。也可是先用循环查找插入位置(可从前往后或从后往前),再将插入位置之后的元素(有序列中)逐个后移一个位置,结果完成插入。该算法的特点是在探索插入位置的同时完成元素的移动。由于元素的移动务必从后往前,那么可将两个操作结合在一起完成,提高算法效率。仍可举行升序或降序排序。
几种排序的概念
1、冒泡排序
算法思想简朴描述:
在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次举行对比和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数对比后察觉它们的排序与排序要求相反时,就将它们互换。
下面是一种提升的冒泡算法,它记录了每一遍扫描后结果下沉数的位置k,这样可以裁减外层循环扫描的次数。
冒泡排序是稳定的'。算法时间繁杂度On2–[n的平方]
2、选择排序
算法思想简朴描述:
在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与其次个位置的数交换,如此循环到倒数其次个数和结果一个数对比为止。
选择排序是不稳定的。算法繁杂度On2–[n的平方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 烘焙店合伙入股合同范本
- 麻辣烫加盟协议合同范本
- 淘宝怎样签保障协议合同
- 淘宝开店合同协议书模板
- 池州离婚财产分割协议书
- 消防入股合同协议书范本
- 社交电商平台代理协议书
- 物业签订供用水合同范本
- 销售合同终止协议书模板
- 终止荒山承包协议合同书
- 弘扬教育家精神做新时代大学教师
- 生态环境执法案件培训
- 孕期健康方式课件
- 2025至2030年中国油页岩行业市场竞争格局及发展前景研判报告
- 2025至2030中国工业软件行业项目调研及市场前景预测评估报告
- 心肺复苏的试题及答案
- 暑假的一次冒险经历记事作文4篇范文
- 贷款渠道签约协议书
- 家人吵架和解协议书
- 2025中国中式餐饮白皮书
- 煤炭工业矿井建设岩土工程勘察规范
评论
0/150
提交评论