- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
多种排序算法比较分析
一 目的
利用《数据结构》课程的相关知识完成一个具有一定难度的综合设计题目,利用C/C++语言进行程序设计,并规范地完成课程设计报告。通过课程设计,巩固和加深对线性表、栈、队列、字符串、树、图、查找、排序等理论知识的理解;掌握现实复杂问题的分析建模和解决方法(包括问题描述、系统分析、设计建模、代码实现、结果分析等);提高利用计算机分析解决综合性实际问题的基本能力。编程实现希尔、快速、堆、归并四种排序算法,并计算每种算法的比较、移动次数。要求待排序数据有系统随机产生,每次选择一种具体的算法将其排序,然后统计排序所需的时间。
二 需求分析
本程序对以下几种内部排序算法进行实测比较:起泡排序、快速排序、堆排序。
程序用来做比较的数据要用伪随机数产生器产生;待排序的元素的为整数;分5组不同的数据,进行不同的测试
记录每种算法的每次运行的时间、将每种算法运行的5次时间加和,然后求其平均值
以下记录各个函数的大概功能
void HeapSort(HeapType *H);
该函数将由系统随机产生的数字经堆排序,然后测试其排序所需的时间
void HeapAdjust(HeapType *H,int s,int m);
该函数将排序后的数据调整
void QSort(SqList *L,int low,int high);
快速排序函数
int Partition(SqList *L,int low,int high);
快速排序算法中的具体比较和移动
void BubbleSort(SqList *L,int k);
起泡排序函数
void print(HeapType L);
显示每次排序后的每组数字
void Initialize(SqList *L);
调用该函数将5组的数据填充,数据有系统随机产生
void show_time_test();
显示每组排序所需要的时间,即显示3种排序方法排序的时间
void show_menu();
显示可选菜单
三 概要设计
1、名称:
该程序的主要流程图如下,它简略的描述了程序的大致流程:
存储结构:
#define MAXSIZE 500 /* 一个用作示例的小顺序表的最大长度 */
typedef struct{
int r[MAXSIZE+1]; /* r[0]闲置或用作哨兵单元 */
int length; /* 顺序表长度,除去哨兵的点 */
}SqList; /* 顺序表类型 */
typedef SqList HeapType;
该结构体作为存储数据的顺序表,r[0]作为闲置点,而length作为顺序表的长度
其中typedef语句用来声明自定义数据类型
{{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}} ;
声明3*5的数组,用来存储3种排序算法的5次排序时间
冒泡排序算法描述:
两两比较相邻记录的关键码,如果反序则交换,直到没有反序记录为止。
实现过程(如图2)。
对于数组(21 25 49 16 08)。
初态:
21 25 49 16 08 第一趟:
21 25 16 08 49 第二趟:
21 16 08 25 49 第三趟:
16 08 21 25 49 第四趟:
08 16 21 25 49
快速排序算法的大致流程:
首先选择一个基准,将记录分割为两部分,左支小于或等于基准,右支则大于基准,然后对两部分重复上述过程,直至整个序列排序完成。
实现过程(如图5)
对于数组(21 25 49 16 08)。
初态:
R[0]=21
21 25 49 16 08 low
第一趟:
R[0]=21
08 25 49 16 08 low
R[0]=21
08 25 49 16 25
R[0]=21
08 16 49 16 25 low
R[0]=21
08 16 49 16 25
R[0]=21
08 16 49 49 25
R[0]=21
low=high
08 16 21 49 25
5、关键算法三:
实现手动与计算机随机双重输入。手动输入检查程序的正确性,计算机随即输入,可以比较各排序算法的性能。
void Rand()//随机数函数
鉴于数据较多,让系统随机产生数据,故省略手动输入。
关键算法四 :
纠错功能。在用户输入非法数据时,给予警告,并要求用户重新输入,不必重启程序
四 详细设计
1、随机产生数据,出入5个数组中
您可能关注的文档
- 复合食品添加剂行业危害因素监控操作细则草案.doc
- 复旦大学经济学考研参考书及就业.doc
- 复转干部指导手则.doc
- 夏商周三代年度表.docx
- 夏天汽车怎样保养.doc
- 夏季六防管理办法 [2].docx
- 夏季学期的收获.doc
- 夏季施工防汛方法.doc
- 夏目漱石先生及我上.doc
- 外事接待语言及使用.doc
- 第12课 大一统王朝的巩固 课件(20张ppt).pptx
- 第17课 君主立宪制的英国 课件.pptx
- 第6课 戊戌变法 课件(22张ppt).pptx
- 第三章 物态变化 第2节_熔化和凝固_课件 (共46张ppt) 人教版(2024) 八年级上册.pptx
- 第三章 物态变化 第5节_跨学科实践:探索厨房中的物态变化问题_课件 (共28张ppt) 人教版(2024) 八年级上册.pptx
- 2025年山东省中考英语一轮复习外研版九年级上册.教材核心考点精讲精练(61页,含答案).docx
- 2025年山东省中考英语一轮复习(鲁教版)教材核心讲练六年级上册(24页,含答案).docx
- 第12课近代战争与西方文化的扩张 课件(共48张ppt)1.pptx
- 第11课 西汉建立和“文景之治” 课件(共17张ppt)1.pptx
- 唱歌 跳绳课件(共15张ppt内嵌音频)人音版(简谱)(2024)音乐一年级上册第三单元 快乐的一天1.pptx
文档评论(0)