版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、北京邮电大学信息与通信工程学院数据结构实验报告实验名称: 实验3排序学生姓名: 满兴源班 级: 2014211105班内序号: 15学 号: 2014210128日 期: 2015年12月28日1 实验要求使用简单数组实现下面各种排序算法,并进行比较。排序算法:1、插入排序2、希尔排序3、冒泡排序4、快速排序5、简单选择排序6、堆排序(选作)7、归并排序(选作)8、基数排序(选作)9、其他要求:1、测试数据分成三类:正序、逆序、随机数据2、对于这三类数据,比较上述排序算法中关键字的比较次数和移动次数(其中关键字交换计为3次移动)。3、对于这三类数据,比较上述排序算法中不同算法的执行时间,精确到
2、微秒(选作)4、对2和3的结果进行分析,验证上述各种算法的时间复杂度编写测试main()函数测试排序算法的正确性。2.1 存储结构 顺序存储结构数组2.2 关键算法分析1. 插入排序:依次将待排序的序列中的每一个记录插入到先前排序好的序列中,直到全部记录排序完毕void Insertsort(int r, int n)for (int i = 2; i <= n; i+)if (ri < ri - 1)int j;r0 = ri;ri = ri - 1;for (j = i - 2; r0 < rj; j-)rj + 1 = rj;rj + 1 = r0;2. 希尔排序:先将
3、整个序列分割成若干个子列,分别在各个子列中运用直接插入排序,待整个序列基本有序时,再对全体记录进行一次直接插入排序void ShellInsert(int r, int n)int j;for (int d = n / 2; d >= 1; d = d / 2)for (int i = d + 1; i <= n; i+)if (ri < ri - 1)r0 = ri;for (j = i - d; j>0 && r0<rj; j = j - d)rj + d = rj;rj + d = r0;3. 冒泡排序:两两比较相邻记录的关键码,如果反序则交
4、换,直到没有反序记录为止void BubbleSort(int r, int n)int pos = n;while (pos != 0)int bound = pos;pos = 0;for (int i = 1; i < bound; i+)if (ri>ri + 1)r0 = ri;ri = ri + 1;ri + 1 = r0;pos = i;4. 快速排序:首先选择一个基准,将记录分割为两部分,左支小于或等于基准,右支则大于基准,然后对两部分重复上述过程,直至整个序列排序完成int Partion(int r, int first, int end)int i = fir
5、st;int j = end;int pivot = ri;while (i < j)while (i < j) && (rj >= pivot)j-;ri = rj;while (i < j) && (ri <= pivot)i+;rj = ri;ri = pivot;return i;void QSort(int r, int i, int j)if (i <j)int pivotloc = Partion(r, i, j);QSort(r, i, pivotloc - 1);QSort(r, pivotloc + 1,
6、j);5. 选择排序:从待排序的记录序列中选择关键码最小的记录并将它与序列中的第一个记录交换位置;然后从不包括第一个位置上的记录序列中选择关键码最小(或最大)的记录并将它与序列中的第二个记录交换位置;如此重复,直到序列中只剩下一个记录为止void SelectSort(int r, int n)for (int i = 1; i < n; i+)int index = i;for (int j = i + 1; j <= n; j+)if (rj < rindex)index = j;if (index != i)r0 = ri;ri = rindex;rindex = r0
7、;用户输入数组开始3. 程序运行结果3.1主函数流程图五种排序输出结果结束3.2程序运行框图源代码:#include<iostream>using namespace std;void print(int r, int n)for (int i = 1; i <= n; i+)cout << ri << " "cout << endl;/*插入排序*/void Insertsort(int r, int n)for (int i = 2; i <= n; i+)if (ri < ri - 1)int j;r0
8、 = ri;ri = ri - 1;for (j = i - 2; r0 < rj; j-)rj + 1 = rj;rj + 1 = r0;/*希尔排序*/void ShellInsert(int r, int n)int j;for (int d = n / 2; d >= 1; d = d / 2)for (int i = d + 1; i <= n; i+)if (ri < ri - 1)r0 = ri;for (j = i - d; j>0 && r0<rj; j = j - d)rj + d = rj;rj + d = r0;/*改
9、进的冒泡排序*/void BubbleSort(int r, int n)int pos = n;while (pos != 0)int bound = pos;pos = 0;for (int i = 1; i < bound; i+)if (ri>ri + 1)r0 = ri;ri = ri + 1;ri + 1 = r0;pos = i;/*快速排序*/int Partion(int r, int first, int end)int i = first;int j = end;int pivot = ri;while (i < j)while (i < j) &
10、amp;& (rj >= pivot)j-;ri = rj;while (i < j) && (ri <= pivot)i+;rj = ri;ri = pivot;return i;void QSort(int r, int i, int j)if (i <j)int pivotloc = Partion(r, i, j);QSort(r, i, pivotloc - 1);QSort(r, pivotloc + 1, j);/*简单选择排序*/void SelectSort(int r, int n)for (int i = 1; i <
11、 n; i+)int index = i;for (int j = i + 1; j <= n; j+)if (rj < rindex)index = j;if (index != i)r0 = ri;ri = rindex;rindex = r0;void main()int x;int n = 10;int rr11 ,a11 ;rr0 = -1;cout << "请输入需要排序的数组:"for (int i = 1; i <= 10; i+)cin >> x;rri = x;for (int i = 1; i <= 10
12、; i+)ai = rri;Insertsort(rr, n);cout << "插入排序法排序后的数为:" << endl;print(rr, 10);for (int i = 1; i <= 10; i+)rri = ai;ShellInsert(rr, n);cout << "希尔排序法排序后的数为:" << endl;print(rr, 10);for (int i = 1; i <= 10; i+)rri = ai;BubbleSort(rr, n);cout << &qu
13、ot;冒泡排序法(改进)排序后的数为:" << endl;print(rr, 10);for (int i = 1; i <= 10; i+)rri = ai;QSort(rr, 1, n);cout << "快速排序法排序后的数为:" << endl;print(rr, 10);for (int i = 1; i <= 10; i+)rri = ai;SelectSort(rr, n);cout << "简单选择排序法排序后的数为:" << endl;print(rr, 10);for (int i = 1; i <= 10; i+)rri = ai;4. 总结1.调试时出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 华为技术区域经理面试全攻略
- 跨部门协作与沟通能力提升课程
- 航空公司飞行员招聘面试全解
- 餐饮业财务经理面试要点及解答
- 新闻媒体编辑部主任面试问题及解答
- 合规政策法规学习资料
- 市场推广经理岗位的应聘准备和面试技巧
- 学校多媒体教室设备的日常使用和保养手册
- 网络教育平台的优化策略与运营管理研究
- 大数据科学家面试知识点
- 2026贵州毕节织金县部分县直单位公开考调工作人员47人实施笔试参考题库及答案解析
- 2026年春季小学二年级下册美术(岭南版2024新教材)教学计划含进度表
- 2026陕煤集团榆林化学有限责任公司招聘(162人)考试备考题库及答案解析
- GB/T 27664.3-2026无损检测仪器超声检测设备的性能与检验第3部分:组合设备
- 数控多工位钻床的设计
- 部编四年级语文下册 全册教案 (表格式)
- 创业引导-与企业名家面对面答案
- 《土地宝忏》2019版定稿
- 篆香-PPT精品课件
- 观光车项目立项申请报告
- 机电一体化课程设计全自动波轮式洗衣机
评论
0/150
提交评论