昆明理工大学信息工程与自动化学院学生实验报告
( 201 —201 学年第一学期)
课程名称:数据结构 开课实验室: 年 月 日
一.实验内容:
查找算法,其中线性表的查找包括顺序查找,二分查找,分块查找;树表的查找包括二叉排序树等;还有散列表的查找等等。
二.实验目的:
1.掌握各种查找算法理解和实现;
2.增强上机编程调试能力;
三.主要程序代码分析:
typedef struct
{
int Key; //关键项
}ElemType;
int Search_Seq(SSTable ST,int Key) //顺序查找
{
int i;
ST.elem[0].Key=Key; //设置监视哨
for(i=ST.length;ST.elem[i].Key!=Key;i--);
return i;
}
int Search_Bin(SSTable ST,int Key) //在有序表中进行二分查找
{
int low=1;
int high=ST.length; //置查找区间的上、下届初值
int mid;
count=0;
while(low<=high) //当前查找区间非空
{
count++;
mid=(low+high)/2;
if(ST.elem[mid].Key==Key)
return mid; //查找成功,返回
else if(Key<ST.elem[mid].Key)
high=mid-1; //缩小查找区间为左子表
else
low=mid+1; //缩小查找区间为右子表
}
return (-1); //查找失败
}
四.程序运行结果:
五.实验总结:
查找又称检索,它也是数据处理中经常使用的一种重要的运算,在线性表上的查找方法有顺序查找,二分查找和分块查找。顺序查找是一种最简单的查找方法。它的基本思想是:从表的一端开始,顺序扫描线性表,依次将扫描到的结点关键字和定值K相比较,若当前扫描到的结点关键字与K相等,则查找成功;若扫描结束后仍未找到关键字等于K的结点,则查找失败。对于二分查找,它要求线性表是有序表,并且要用向量作为表的存储结构。
我们在以后的学习中也要不断地熟悉这些查找方法,因为它们在数据处理中会经常用到,只有将它们掌握好,而且我们还要不断地练习,这样我们的编程能力才会提高,有更大的进步。