几种常见排序算法实现与性能分析数据结构课程设计报告概要.docVIP

几种常见排序算法实现与性能分析数据结构课程设计报告概要.doc

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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() { 初始化; 随机数的产生

文档评论(0)

q96tcntzow + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档