数据结构内部排序算法比较题库.doc

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内部排序算法比较 目录 摘 要 1 1绪论 1 2系统分析 1 2.1 功能需求 1 2.2数据需求 1 2.3 性能需求 2 3总体设计 2 3.1系统设计方案 2 3.2功能模块设计 2 4详细设计 3 4.1 数据结构定义 3 4.2伪随机产生数据模块 4 4.3简单选择排序模块 6 4.4起泡排序模块 7 4.5直接插入排序模块 8 4.6希尔排序模块 9 4.7快速排序模块 10 4.8归并排序模块 11 4.9条形图模块 12 5调试与测试 13 5.1 调试 13 5.2 测试 13 6结论 14 结束语 14 参考文献 15 附录1-用户手册 16 附录2-源程序 18 1绪论 随着科技的快速发展,越来越多的企业不再浪费人力财力去计算一些统计性结果,而是应用一些简单的程序或系统来完成这些任务。随着学习数据结构课程的深入,了解了不同排序算法的不同排序方法,每种排序对数据的比较次数、移动次数和排序用时都是不同的,本程序实现了六种内部排序算法的比较,并用条形图直观的显示出各种算法的优劣。运用伪随机产生的数据,调用六种排序算法,记录其比较次数、移动次数和排序时间,再分别用条形图(星号表示)表示出来。 2系统分析 2.1 功能需求 (1)对起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序算法进行比较。 (2)待排序的元素的关键字为整数,其中数据要用伪随机产生程序产生,并且至少用5组的输入数据做比较,再使用各种算法对其进行排序,记录其排序时间,再汇总比较。 (3)演示程序以人机对话的形式进行,每次测试完毕显示各种比较指标值,比较次数、移动次数和排序时间的列表,并用条形图即星号表示出来,以便比较各种排序的优劣。 2.2数据需求 抽象数据类型:线性表、排序算法 (1) 输入数据:需要比较的数据数目 (2) 输出数据:不同算法的比较次数、移动次数、排序时间的数据以及对应的条形图。 2.3 性能需求 在运行本程序时,只要按照正确的操作方法不会出现无法运行的情况,系统稳定性好,安全,可靠,响应速度由需比较的数字数目多少来决定。 3总体设计 3.1系统设计方案 (1) 输入要排序的数据数目 (2) 抽象数据类型定义 typedef struct { int key; }ElemType; //关键字 typedef struct { ElemType *elem; int length; }SqList;//分配顺序存储结构 (3) 存储结构:本程序采用了线性表的顺序存储结构。 (4) 算法设计: 简单选择排序:运用顺序表。时间复杂度O(n2),空间复杂度O(1)。 起泡排序:时间复杂度O(n2),空间复杂度O(1) 直接插入排序:时间复杂度O(n2),空间复杂度O(1) 希尔排序:时间复杂度O(n1.3),空间复杂度O(1) 快速排序:时间复杂度O(nlog2n),空间复杂度O(nlog2n) 归并排序:时间复杂度O(nlog2n),空间复杂度O(n) 3.2功能模块设计 根据分析整个程序主要划分为8个功能模块,分别执行要求中的功能。1个产生伪随机数据模块、6个内部排序算法模块以及1个形成条形图模块。功能模块图如图1所示 图1功能模块图 (1)伪随机产生数据模块:本程序要求数据是要用伪随机产生程序产生,再用不同排序算法进行排序。 (2)简单选择排序模块:运用简单选择排序法对伪随机产生的数据进行排序。 (3) 起泡排序模块:运用起泡排序法对伪随机产生的数据进行排序。 (4)直接插入排序模块:运用直接插入排序法对伪随机产生的数据进行排序。 (5)希尔排序模块:运用希尔排序法对伪随机产生的数据进行排序。 (6)快速排序:运用快速排序法对伪随机产生的数据进行排序。 (7)归并排序:运用归并排序法对伪随机产生的数据进行排序。 (8)条形图表示比较结果:统计6种排序算法的比较结果,用条形图表示出来。 4详细设计 4.1 数据结构定义 typedef struct {int key; }ElemType; //关键字 typedef struct { ElemType *elem; int length; }SqList;//分配顺序存储结构 4.2伪随机产生数据模块 伪随机产生数据模块可实现伪随机产生不同数目的数据以供排序,运用顺序存储结构来实现的。该模块具体实现程序流程如图2所示。 图2 伪随机产生数据模块 4.3简单选择排序模块 简单选择排序模块可实现用简单排序法对产生的数据进行排序。该模块具体实现程序流程如图3所示。 图3 简单选择模块 4.4起泡排序模块 起泡排序模块可实现运用起泡排序法对数据进行排序,该模块具体实现

文档评论(0)

bbnnmm885599 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档