- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C 课程设计--基于选择排序方法的类模板设计与实现
C++课程设计--基于选择排序方法的类模板设计与实现
成绩
日期20年 月 日
课程设计任务书
学 院 信息科学与工程 专 业 通信工程
学生姓名 吴琼 班级学号
课程设计题目 基于选择排序方法的类模板设计与实现
实践教学要求与任务
建立一维数组数据结构的模板类,使一维数组中的数据元素可以是char, int, float等多种数据类型,并对数组元素实现选择类排序。主要完成如下功能:
(1) 实现数组数据的输入和输出;
(2) 实现简单选择排序功能;
(3) 实现树形选择排序功能;
(4) 实现堆排序功能;
(5) 将每种排序功能作为类的成员函数实现,编写主函数测试上述排序功能。
工作计划与进度安排
第17周:分析题目,查阅课题相关资料,进行类设计、算法设计;
第18周:程序的设计、调试与实现;
第19周:程序测试与分析,撰写课程设计报告,进行答辩验收。
指导教师: 201 年 月 日 专业负责人:
201年 月 日 学院教学副院长:
201年 月 日
摘 要
计算机中存储的数据,初始时没有任何排列规律,根据实际需求,经常要排列成有规律的数据序列也就是将数据序列按关键字升序或降序规律排列。
选择排序是排序法中很经典的算法,选择排序法可以分为简单选择排序、树形选择排序和堆排序。
本文采用C++语言实现了选择排序功能,设计了模板类,实现了int型float型和char型数组的排序,设计了简单选择排序、树形选择排序和堆排序的三个函数体,采用Visual C++ 6.0的控制台工程和MFC工程分别实现了各类型数组的排序,通过对两种程序的测试结果表明:简单选择排序是选择排序的基础,而树形选择排序和堆排序是简单选择排序的改进。
关键词:模板类;简单选择排序;树形选择排序;堆排序;控制台工程;MFC工程。
目 录
1 需求分析 1
2 算法基本原理 1
3 类设计 3
4 基于控制台的应用程序 3
4.1 类的接口设计 4
4.2 类的实现 4
4.3 主函数设计 9
4.4 基于控制台的应用程序测试 11
5 基于MFC的应用程序 13
5.1 基于MFC的应用程序设计 13
5.1.1 MFC程序界面设计 13
5.1.2 MFC程序代码设计 15
5.2基于MFC的应用程序测试 21
结 论 22
参考文献 23
1 需求分析
(1)当进行数据处理时,经常遇到需要进行查找操作,通常希望待处理的数据按关键字大小有序排序,因为这样就可以采用查找效率较高的查找算法。
(2)对有序的顺序表可以采用查找效率较高的折半查找算法,而对无序的
顺序表只能采用顺序查找算法。由此可见排序是计算机程序设计中一种基础性操
作,研究和掌握各种排序方法是非常重要的。
(3)排序算法对于计算机信息处理很重要,一个好的排序不仅可以使信息 查找的效率提高,而且直接影响着计算机的工作效率。
本实验题目为基于选择排序方法的类模板设计与实现,要求建立一维数组数据结构的模板类,使一维数组中的数据元素可以是char, int, float等多种数据类型,并对数组元素实现选择类排序。因此实验采用类模板,可以对不同的数据类型的数据进行排序,并通过函数采用不同的方法进行排序。
2 算法基本原理
(1)简单选择排序
从无序的记录序列中选出一个关键字值最小的记录存入到指定的位置。
//简单选择排序
SelectSortType ar[]
int i,j;
Type t;
fori1;ilen;i++forji+1;jlen;j++
ifarray[i]array[j]
tarray[i];array[i]array[j];array[j]t;
(2)树形选择排序
树形选择排序的基本思想:树形选择排序又称锦标赛排序(Tournament Sort),是一种按照锦标赛的思想进行选择排序的方法。首先对n个记录的关键字进行两两比较,然后在n/2个较小者之间再进行两两比较,如此重复,直至选出最小的记录为止。
(3).堆排序
堆排序由建初始堆和调整堆两个过程组成。再次,所谓筛选是指对一棵左右子树均为堆的完全二叉树,经调整根节点后使之成为堆的过程。建堆时一定要从最后一个非叶子结点开始。
堆排序的关键是调整堆,建初始堆时也是要从最后一个非叶子结点开始向根结点方向进行调整建堆。假设完全二叉树的第i个结点的左子树,右子树已是堆,则对第i个结点进行调整时,需要将r[2i].key与r[2i+1].key之中的最大者与r[i].
文档评论(0)