实验五排序算法设计和比较
更新时间:2024-03-20 02:51:01 阅读量: 综合文库 文档下载
- 算法设计与分析实验五推荐度:
- 相关推荐
实验五 排序算法设计和比较
一、【实验内容与要求】
问题描述:利用直接插入排序、冒泡排序、快速排序对数列进行排序。
基本要求:
(1) 能随机生成30个值为0到100的数。
(2) 用于排序的输入数列可以是要求(1)中随机生成的,也可以是键盘
输入。
(3) 输出结果为利用三种方法排序后的结果,并能显示三种算法时间、空
间性能参数值。
【测试数据】
由随机自行生成若干个数,进行排序。
二、程序设计的基本思想,原理和算法描述:
(包括程序的结构,数据结构,输入/输出设计,符号名说明等) 1) 符号说明:
m1,m2,m3 代表三种排序法的循环次数 a[],b[],c[] 分别用来存储三次排序的数据 temp 中间变量
n 参与排序的数字个数 maopao(a,n) 冒泡程序排序 zhicha(b,n) 直接插入排序 quick(a,h,l) 快速排序法 h 分块排序的上限 l 分块排序的下限
2) 程序说明(结构,输入输出)
这个程序整个流程比较自然,一脉相传,即先输入要排序的个数,然后选择要输入的方式,将产生的数传到数组中,然后依次地用冒泡子程序,直接插入的程序,快速排序的方法,依次排序,并将排好的数输出,以及算法的时间复杂率。
3)程序流程图
同时将得到的数同步传到数组b[],c[];为下面各种排序做准备 选择输入方式k? K=1 调用随机数函数,由随机产生n个数 初始化函数,根据提示语句,输入要参加数字个数n START K=2 调用键盘输入函数,由键盘输入要比较的数(n个数)
调用直接插入子程序重复上面操作,输出结果。 调用冒泡排序的子程序,传输参数,排序从大到小,并计算循环的次数,将结果输出 调用快速排序子程序,重复操作,输出结果。 END 三、源程序及注释:
#include\#include\
int m1=0;全局变量定义冒泡法循环的次数
int m2=0; 全局变量定义直接插入法循环的次数 int m3=0; 全局变量定义快速法循环的次数 int suiji(int a[],int n) ;随机生成目的数函数 { int i,j,temp;
srand((unsigned)time(NULL)); srand播下一个种子 for(i=0;i jianpan(int a[],int n) 键盘输入目的数函数 { int i,j,k,l; for(i=0;i maopao(int a[],int n) 冒泡法排序程序 { int i,j,temp; for(i=0;i for(j=1;j<(n-i);j++) ;具体的排序过程 {if(a[j]>a[j-1]) { temp=a[j]; a[j]=a[j-1]; a[j-1]=temp; } m1++; 计算循环次数 } printf(\ for(i=0;i zhicha(int b[],int n) 直接插入排序子程序 { int i,j,temp; printf(\ for(i=1;i quick(int c[],int l,int h) 快速排序法 { int temp; int i,j,k; i=l;j=h; if(l { int i,j,k,n; int a[100],b[100],c[100]; 定义三个数组来存放三种方法的数字 clrscr(); 清屏函数 printf(\ scanf(\ 输入要参与排序的数目 printf(\ scanf(\选择输入的方式 if(k==1) k=1 则调用随机函数调用 {suiji(a,n);} if(k==2) k=2 则调用键盘输入函数 { jianpan(a,n); } for(i=0;i maopao(a,n); 调用冒泡法程序 zhicha(b,n); 调用直接插入排序 printf(\ quick(c,0,n-1); 调用快速排序法 for(i=0;i { printf(\ %d\ if((i+1)%5==0) printf(\ } printf(\ getchar(); getchar(); }?? 四、运行输出结果: 五、调试和运行程序过程中产生的问题及采取的措施: 在写程序的过程思路比较清晰,遇到的困难主要是编程软件的不兼容,或是某些c语言规则在一些软件上为非法的,早先我用的一直用地是devC++,但是在用随机生成数子函数,一直提示有错误,改正不了,最后只好用最原始的turbo C问题解决了,发现最好用的还是tc啊,以后只用突出(我电脑一直装不了vc++,不知道怎么回事),在具体编程中需要考虑的是函数形参和实参的格式,一定要一致。 六、对算法的程序的讨论、分析,改进设想,其它经验教训: 这次程序中主要用三种排序方法:a。冒泡排序b直接插入排序c。快速排序。其中 冒泡排序的时间复杂度:O(n2) 空间复杂度:O(1) 直接插入排序时间复杂度:O(n2) 空间复杂度:O(1) 序法 冒泡排序 快速排序 选择排序 二叉树排序 插入排序 最差时间分析 O(n2) O(n2) O(n2) O(n2) O(n2) 平均时间复杂度 O(n2) O(n*log2n) O(n2) O(n*log2n) O(n2) 稳定度 稳定 不稳定 稳定 不一顶 稳定 空间复杂度 O(1) O(log2n)~O(n) O(1) O(n) O(1) 六、对算法的程序的讨论、分析,改进设想,其它经验教训: 这次程序中主要用三种排序方法:a。冒泡排序b直接插入排序c。快速排序。其中 冒泡排序的时间复杂度:O(n2) 空间复杂度:O(1) 直接插入排序时间复杂度:O(n2) 空间复杂度:O(1) 序法 冒泡排序 快速排序 选择排序 二叉树排序 插入排序 最差时间分析 O(n2) O(n2) O(n2) O(n2) O(n2) 平均时间复杂度 O(n2) O(n*log2n) O(n2) O(n*log2n) O(n2) 稳定度 稳定 不稳定 稳定 不一顶 稳定 空间复杂度 O(1) O(log2n)~O(n) O(1) O(n) O(1)
正在阅读:
实验五排序算法设计和比较03-20
保险工作证明范本(精选7篇)03-31
网络辅导:《系统工程导论》模拟试卷一10-03
能帮助学子考上北航法硕的辅导班05-18
2016年4月份考试作业房地产评估第3次03-08
大学励志经典话语11-20
导数综合练习二利用导数求参数范围04-24
社区文化活动方案03-26
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 算法
- 排序
- 实验
- 比较
- 设计
- 调整西藏农业产业结构,走产业化之路
- 文华财经软件指标公式源码最准的指标
- 电气装置行业分析调研及投资前景分析报告2019年目录
- 论文 余姚市姚西北地区农村自来水收费问题的研究
- 度米文库精品文档中考满分作文必备关于三八妇女节的素材
- 人教版五年级下册数学第四单元分数练习题
- 一年级学生行为习惯养成案例
- 江西职业院校技能大赛 - 图文
- 2012年浙江省宁波市中考数学试卷(解析版)
- 行政法与行政诉讼法形成性考核册
- 大学校园环保主题系列活动策划书
- 国家安全监管总局关于印发安全文化十二五规划
- 湖北省黄冈中学高考数学压轴题精编精解(五)
- 配套K12河北省蠡县中学2018-2019学年高二地理10月月考试题
- 2012年国家公务员考试十大必备热点
- 剑桥雅思8--9精选词汇
- 尔雅 钢琴艺术赏析 考试答案
- 第16章 中央银行与货币政策(模拟训练题)
- 第十四章探究欧姆定律同步练习(附答案)
- 山西省山大附中2013届高三3月月考数学理试题