封 皮
(按学校要求手工填写)
课程设计任务书
学 院信息科学与工程专 业通信工程学生姓名史龙云班级学号1103060432课程设计题目静态查找类模板的设计与实现实践教学要求与任务
建立一维数组数据结构的模板类,使一维数组中的数据元素可以是char, int, float等多种数据类型,并对数组元素进行静态查找。主要完成如下功能:
实现数组数据的输入和输出;
对数组进行顺序查找;
对有序数组进行折半查找(递归算法);
对有序数组进行折半查找(非递归算法);
将每种查找功能作为类的成员函数实现,编写主函数测试上述查找功能。
工作计划与进度安排
第17周:分析题目,查阅课题相关资料,进行类设计、算法设计;
第18周:程序的设计、调试与实现;
第19周:程序测试与分析,撰写课程设计报告,进行答辩验收。
201 年 月 日专业负责人:
201 年 月 日学院教学副院长:
201 年 月 日
摘 要
建立一维数组数据结构的模板类,使一维数组中的数据元素可以是char, int, float等多种数据类型,并对数组元素进行静态查找。本文采用C++语言实现了,对数组的顺序查找,对数组进行递归折半查找,对数组进行非递归折半查找,设计了数组类模板采用Visual C++ 6.0的控制台工程和MFC工程分别实现了数组的输入,输出,以及顺序查找,递归查找的程序。通过对两种程序的测试结果表明:只要算法正确,两种程序都能正确的查找到给定元素的正确位置。
关键词:顺序查找;折半查找;控制台工程;MFC工程
目 录1 需求分析1
2 算法基本原理1
3 类设计2
4 基于控制台的应用程序4
4.1 类的接口设计4
4.2 类的实现5
4.3 主函数设计11
4.4 基于控制台的应用程序测试12
5 基于MFC的应用程序13
5.1 基于MFC的应用程序设计14
5.1.1 MFC程序界面设计14
5.1.2 MFC程序代码设计15
5.2基于MFC的应用程序测试18
结 论20
参考文献21
1 需求分析
(1) C++语言具有丰富的数据类型,除了一些基本的数据类型(如整形,实型和字符型等)外,还有数组类型,指针类型,结构体类型,公用体类型和枚举类型。数组就是一些按序排列的相同类型数据元素的集合。
(2)顺序查找:对于给定的关键字k,从数组的第一个元素开始,一次向后与记录的关键字域相比较,如果某个记录的关键字等于k,则查找成功,否则查找失败。
2 算法基本原理
①low=1;high=n;
②若low>high,则查找失败
③mid=(low+high)/2;若key=L.r[mid].key,则查找成功,返回mid;
若key
若key>L.r[mid].key,则low=mid+1,转 ②;
其中low和high分别指示查找区间的起始位置和终止位置,mid指示中间元素的位置。
举例说明折半查找的过程。若在顺序存储的有序表中各记录的关键字为:
{14,25,35,40,45,55,62,72,77,92}
要求查找关键字number=55的记录,查找过程如下:
low=1 high=10 mid=5
1 2 3 4 5 6 7 8 9 10
14253540455562727792 low mid high
由于L.r[5].key=45<55,则low=6 high=10 mid=8
1 2 3 4 5 6 7 8 9 10
14253540455562727792 low mid high
由于L.r[8].key=72>55,则low=6 mid=7 high=6
1 2 3 4