- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
几种常有的排序算法的实现与性能剖析数据构造课程设计报告纲要
几种常有的排序算法的实现与性能剖析数据构造课程设计报告纲要
PAGE / NUMPAGES
几种常有的排序算法的实现与性能剖析数据构造课程设计报告纲要
课程设计 ( 论文 )
题
目 名 称
几种常有的排序算法的实现与性能剖析
课
程 名 称
数据构造课程设计
学
生 姓 名
学
号
系
、专 业
信息工程系、通讯工程
指
导 教 师
2012年 12 月 23 日
摘 要
设计一个测试程序比较起泡排序、直接排序、简单项选择择排序、迅速排序、希尔
排序、堆排序算法的重点字比较次数和挪动次数。运用多种自定义函数,经过在主
函数中调用自定义函数, 实现其功能,最后输出相应算法的比较次数 ( 起码有五种不
同的数据 ) 和挪动次数(重点字的互换记为三次挪动) 。进而直观的判断各内部排序
算法性能的好坏性。
重点词: 起泡排序;直接排序;简单项选择择排序;迅速排序;希尔排序;堆排序;
内部排序;直观;比较次数;挪动次数
目录
1 问题描绘 1
2 需求剖析 1
3 纲要设计 1
3.1 抽象数据种类定义 1
3.2 模块区分 2
4 详尽设计 . 3
4.1 数据种类的定义 3
4.2 主要模块的算法描绘 3
5 测试剖析 . 8
6 课程设计总结 12
参照文件 12
附录(源程序清单) . 13
问题描绘
设计一个测试程序比较起泡排序、直接排序、简单项选择择排序、迅速排序、希尔
排序、堆排序算法的重点字比较次数和挪动次数以获得直观感觉。待排序表的表长
不小于 100,表中数据随机产生,起码用 5 组不一样数据作比较,比较指标有:重点
字参加比较次数和重点字的挪动次数(重点字互换记为 3 次挪动)。最后输出比较
结果。
需求剖析
(1)用数组 S 来寄存系统随机产生的 100 个数据,并放到 R 数组中,数据由
程序随机产生,用户只要查察结果。
(2)利用全局变量 times 和 changes来分别统计起泡排序、直接排序、简单
选择排序、迅速排序、希尔排序、堆排序算法的比较次数和挪动次数,而后输出结
果,并在每一次统计以后,将 times 和 changes都赋值为 0。
(3)在主函数中调用用户自定义函数,输出比较结果。
(4)本程序是对几种内部排序算法的重点字进行性能剖析的程序, 它分为以下
几个部分: a、成立数组; b、调用函数求比较和挪动次数; c、输出结果。
纲要设计
3.1 抽象数据种类定义
排序数据种类定义:
ADT paixu{
数据对象: D={a ij |aij 属于 {1 ,2,3 },i,j0 }
数据关系: R={ai-1,ai|ai-1,ai ∈D,i=2,...,n}
基本操作:
Insertsort();
初始条件:数组已经存在。
基本思想:将一个记录插入到已经排好序的有序列表中, 进而获得了一个新的、记录新增 1 的有序表。
1
Shellsort();
初始条件:数组已经存在。
基本思想:先取定一个正整数 d1n,把所有记录分红 d1 个组,所有距离为 d1 倍数的记录放在一组中, 在各组内进行插入排序, 而后取 d2d1 重复上述分组和排序工作,直至取 di=1,即所有记录放在一个组中排序为止。
Bubblesort();
初始条件:数组已经存在。
基本思想:两两比较待排序记录的键值,并互换不知足次序要求的那些偶对,
直到所有知足次序要求为止。
QuickSort(int low,int high) ;
初始条件:数组已经存在。
基本思想:在待排序的 n 个记录中任取一个记录 (往常取第一个记录),以该记
录的键值为基准用互换的方法将所有记录分红两部分,所有键值比它小的布置在一
部分,所有键值比它大的布置在另一部分,并把该记录排在两部分的中间,也就是
该记录的最后地点。这个过程称为一趟迅速排序。而后分别对所区分的两部分重复
上述过程,向来重复到每部分内只有一个记录为止排序达成。
Selectsort();
初始条件:数组已经存在。
基本思想:每次从待排序的记录中选出键值最小(或最大)的记录,次序放在
已排序的记录序列的最后,直到所有排完。对待排序的文件进行 n-1 趟扫描,第 i
趟扫描选出剩下的 n-i+1 个记录,并与第 i 个记录互换。
Heap();
初始条件:数组已经存在。
基本思想:对一组待排序的的键值,第一是把它们按堆的定义摆列成一个序列
(称为初建堆),这就找到了最小键值, 而后把最小的键值拿出,用剩下的键值再重
建堆,便获得次小键值,这样频频进行,知道把所有键值排好序为止。
}ADT 排序
3.2 模块区分
本程序包含两个模块:
(1)主程序模块
2
void main()
{
初始化;
随机数的产生
您可能关注的文档
- 凝析油安全技术说明书.doc
- 凝汽器组合汇总.doc
- 凝胶含量测试.doc
- 几个和第几个六年级数学教案模板.doc
- 几个小动作你身体是年轻还是衰老一目了然.doc
- 几个搜索引擎特点比较.doc
- 几个简单家常菜谱.doc
- 几个简单步骤完成这个PS教程(精).doc
- 几何08不规则多边形.讲义.doc
- 几何《相交线》教学设计七年级数学教案模板.doc
- 数据仓库:Redshift:Redshift与BI工具集成.docx
- 数据仓库:Redshift:数据仓库原理与设计.docx
- 数据仓库:Snowflake:数据仓库成本控制与Snowflake定价策略.docx
- 大数据基础:大数据概述:大数据处理框架MapReduce.docx
- 实时计算:GoogleDataflow服务架构解析.docx
- 分布式存储系统:HDFS与MapReduce集成教程.docx
- 实时计算:Azure Stream Analytics:数据流窗口与聚合操作.docx
- 实时计算:Kafka Streams:Kafka Streams架构与原理.docx
- 实时计算:Kafka Streams:Kafka Streams连接器开发与使用.docx
- 数据仓库:BigQuery:BigQuery数据分区与索引优化.docx
文档评论(0)