版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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年在线销售技术服务合同
- 2026年医院锅炉房运营管理合同
- 2025年水体污染治理项目可行性研究报告
- 2025年无纸化办公解决方案可行性研究报告
- 2025年数字化转型对企业影响可行性研究报告
- 美国谈判平协议书
- 2025年农业气象服务平台建设项目可行性研究报告
- 高一历史下册期中考试卷及答案
- 滴专车司机专业技能面试题及解答手册参考
- 大型跨国企业高管面试题
- 2025中原农业保险股份有限公司招聘67人笔试备考重点试题及答案解析
- 2025中原农业保险股份有限公司招聘67人备考考试试题及答案解析
- 2025年度河北省机关事业单位技术工人晋升高级工考试练习题附正确答案
- 交通运输布局及其对区域发展的影响课时教案
- 2025年中医院护理核心制度理论知识考核试题及答案
- GB/T 17981-2025空气调节系统经济运行
- 比亚迪储能项目介绍
- 2025年9月广东深圳市福田区事业单位选聘博士11人备考题库附答案
- 糖尿病足溃疡VSD治疗创面氧自由基清除方案
- 《公司治理》期末考试复习题库(含答案)
- 自由职业者项目合作合同协议2025年
评论
0/150
提交评论