1、课程设计任务书课程设计任务书 学 院 信息科学与工程 专 业 通信工程 学生姓名 班级学号 课程设计题目 基于选择排序方法的类模板设计与实现 实践教学要求与任务实践教学要求与任务 建立一维数组数据结构的模板类,使一维数组中的数据元素可以是 char, int, float 等多种数据类型,并对数组元素实现选择类排序。主要完成如下功能: (1) 实现数组数据的输入和输出; (2) 实现简单选择排序功能; (3) 实现树形选择排序功能; (4) 实现堆排序功能; (5) 将每种排序功能作为类的成员函数实现,编写主函数测试上述排序功能。 工作计划与进度安排工作计划与进度安排 第 17 周:分析题目,
2、查阅课题相关资料,进行类设计、算法设计; 第 18 周:程序的设计、调试与实现; 第 19 周:程序测试与分析,撰写课程设计报告,进行答辩验收。 指导教师: 201 年 月 日 专业负责人: 201 年 月 日 学院教学副院长: 201 年 月 日 摘 要 计算机中存储的数据,初始时没有任何排列规律,根据实际需求,经常要排列成有 规律的数据序列也就是将数据序列按关键字升序或降序规律排列。 选择排序是排序法中很经典的算法,选择排序法可以分为简单选择排序、树形选择排序 和堆排序。 本文采用 C+语言实现了选择排序功能, 设计了模板类, 实现了 int 型 float 型和 char 型数组的排序,
3、 设计了简单选择排序、 树形选择排序和堆排序的三个函数体, 采用 Visual C+ 6.0 的控制台工程和 MFC 工程分别实现了各类型数组的排序, 通过对两种程序的测 试结果表明:简单选择排序是选择排序的基础,而树形选择排序和堆排序是简单选择排 序的改进。 关键词:模板类;简单选择排序;树形选择排序;堆排序;控制台工程;MFC 工 程。 目 录 1 需求分析 1 2 算法基本原理 1 3 类设计 3 4 基于控制台的应用程序 3 4.1 类的接口设计 3 4.2 类的实现 4 4.3 主函数设计 9 4.4 基于控制台的应用程序测试 11 5 基于 MFC 的应用程序 12 5.1 基于
4、MFC 的应用程序设计错误错误!未定义书签。未定义书签。 5.1.1 MFC 程序界面设计 . 13 5.1.2 MFC 程序代码设计 . 14 5.2 基于 MFC 的应用程序测试 21 结 论 22 参考文献 23 1 1 需求分析 (1) 当进行数据处理时,经常遇到需要进行查找操作,通常希望待处理的数据 按关键字大小有序排序,因为这样就可以采用查找效率较高的查找算法。 (2)对有序的顺序表可以采用查找效率较高的折半查找算法,而对无序的 顺序表只能采用顺序查找算法。 由此可见排序是计算机程序设计中一种基础性操 作,研究和掌握各种排序方法是非常重要的。 (3)排序算法对于计算机信息处理很重要
5、,一个好的排序不仅可以使信息 查找的效率提高,而且直接影响着计算机的工作效率。 本实验题目为基于选择排序方法的类模板设计与实现,要求建立一维数组数 据结构的模板类,使一维数组中的数据元素可以是 char, int, float 等多种数据类 型,并对数组元素实现选择类排序。因此实验采用类模板,可以对不同的数据类 型的数据进行排序,并通过函数采用不同的方法进行排序。 2 算法基本原理 (1)简单选择排序 从无序的记录序列中选出一个关键字值最小的记录存入到指定的位置。 /简单选择排序 SelectSort(Type ar) int i,j; Type t; for(i=1;i=1;i-) Adju
6、stTree(array,i,len); /进行 n-1 次循环,完成堆排序 for(i=len;i=2;i-) t=arrayi; arrayi=array1; array1=t; AdjustTree(array,1,i-1); 3 3 类设计 从上面的算法分析可以看到,本设计面临的问题的关键是类模板。可以定义 一个模板类 sort,模板类 sort 功能有输入,输出数组,用三种方法对数组进行排 序。 从问题的需要来看,在模板类中定义三个成员函数。成员函数 SelectSort() 对数组进行简单选择排序,成员函数 tree_select_sort()对数组进行树形选择排 序,成员函数 HeapSort()对数组进行堆排序。成员函数 AdjustTree()通过始 建和调整堆辅助堆排序,而成员函数 write( ) 和 print( ) 输入输出数组。主函数 中应用 if( ) 判断语句确定数组数据类型,swich()语句选择使用的排序方法。 定义了两个对象分别是整型和字符型的。 类用 template 限定,其中的数