桂 林 理 工 大 学
实 验 报 告
班级 计算机类 学号 3202052051 姓名 同组实验者
实验名称 查找算法的实现 日期 2021 年 6 月 30 日
- 实验目的:
1.掌握查找算法的相关概念,评价方法等。
2.掌握典型的查找算法,包括顺序查找、二分查找。
3.了解哈希查找算法的思想,了解几种解决冲突的方法。
4.了解二叉排序树的结构,了解二叉排序树的基本操作。
二、实验环境:
Visual C++ 6.0
三、实验内容:
(写出主要的内容)
说明:为简化算法,查找实验部分数据元素只包含一个整型关键字字段,用整型数组处理,数据元素的其余数据部分忽略不考虑。在理解基本算法的基础上,可采用教材上给出的结构体定义形式,实现对结构体数组中指定关键字的查找。
步骤1:打开文件search.h,阅读代码,其中函数SeqSearch实现带监视哨的顺序查找,函数SeqSearch2实现不带监视哨的顺序查找,理解代码。
步骤2:打开文件search_1.cpp,运行程序,输入的查找数据依次为1000000,1,500000,-100,观察运行结果。
步骤3:将文件search_1.cpp中的语句locate = SeqSearch(array,SIZE,key); 更改为调用函数SeqSearch2,运行程序,输入步骤2中的数据,观察运行结果。
步骤4:打开文件search.h,其中函数BinSrch实现折半查找算法,请在函数中/*添加代码*/处添加代码,将函数功能补充完整,并将search_1.cpp中的函数调用语句改为调用BinSrch函数,观察程序运行结果。
步骤5(选做):在文件search.h中增加一个函数,函数名为BinSrch_rec,函数参数及返回值与函数BinSrch相同,函数BinSrch_rec递归实现折半查找,请写出完整的函数,并在search_1.cpp中的主函数中增加调用函数BinSrch_rec的语句。
步骤6:打开文件bst.cpp,该程序实现二叉排序树的基本功能,包括建立二叉排序树、对二叉排序树进行查找。其中函数InsertBST功能为在二叉排序树中插入一个结点,请在函数体中/*将s插入左子树*/、/*将s插入右子树*/两处添加递归调用函数语句,实现相应的功能。函数InOrder实现中序遍历二叉树,请将函数体补充完整。
步骤7:函数SearchBST实现二叉排序树的递归查找,函数SearchBST_2实现二叉排序树的非递归查找,比较这两个函数的函数体,掌握递归与非递归进行查找的方法。
步骤8:主函数功能为创建一棵二叉排序树,并以中序遍历形式输出。运行程序,输入不少于10个数据,构建二叉排序树,观察程序运行结果。采用同样的10个数据,不同的输入顺序,构建二叉排序树。不同输入顺序构建的二叉排序树是否相同?
递归查找
非递归查找
步骤9:在主函数中添加代码,实现如下功能:输入待查找数据后,分别调用递归查找函数、非递归查找函数进行查找,输出查找结果。
四、心得体会:
1.本次通过学习了查找算法,顺序查找,二分查找。比较几种查找算法的区别与联系。更好的学习了查找的方法。
2.本次还学习二叉排列树,了解了二叉排序树的创建,以及递归查找等问题。
3.希望继续学习了解基本算法,运用到实际应用问题上去。还需要多加练习。