- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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起泡排序模块
起泡排序模块可实现运用起泡排序法对数据进行排序,该模块具体实现程序流程如图4所
您可能关注的文档
最近下载
- 2024年执法资格考试考前预测卷及答案(二).pdf VIP
- 智慧楼宇综合能源服务系统方案设计.pptx
- 初中化学人教版初中化学必须背的知识点.doc
- 【完整正版高清】T_CFLP 0016-2023《国有企业采购操作规范》【2023修订版】.doc
- 抗凝剂皮下注射相关并发症及处理对策.pptx
- 2021年手工木工初级理论知识试卷.doc
- 广州数控GSK928TCa 车床数控系统 使用手册中文.pdf
- 福建省厦门市双十中学2024-2025学年初三毕业生3月学习质量检测试题物理试题试卷含解析.doc VIP
- 超星尔雅学习通《形势与政策(2025春)》章节测试题库及答案(易错题).docx VIP
- 第八章体育无形资产-首都体育学院.ppt
文档评论(0)