数据结构实验---折半查找实验报告.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
折半查找实验报告 本实验REPORT的主要内容是实现折半查找算法,掌握顺序查找方法的理论原理和实现过程。通过编程实现折半查找算法,验证算法的正确性和实用性。 折半查找算法的原理是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。折半查找是一种高效的查找方法,可以明显减少比较次数,提高查找效率。 实验步骤: 1. 确定整个查找区间的中间位置mid = [low + high]/2 2. 用待查关键字值与中间位置的关键字值进行比较 3. 如果相等,则查找成功 4. 如果大于,则在后(右)半个区域继续进行折半查找 5. 如果小于,则在前(左)半个区域继续进行折半查找 6. 对确定的缩小区域再按折半公式,重复上述步骤 实验代码: ```c #include <iostream.h> #include <stdio.h> const int MaxLen=100; //设定图最多包含 100 个顶点 int Data[MaxLen];//装载数据序列 int Dnum;//表示数据序列实际长度 int icount;//查找次数 int Search_Bin ( int ST[], int length, int key ) { int low,mid,high; //low,high,mid 分别用来存放待查元素的上界,下界和中间位置 low=0; //首先 low 从数组 ST[]的第 0 号开始 high=length-1; //high 从数组 ST[]的最后一位开始 while(low <= high) { icount++;//查找次数加一 mid=(low+high)/2; //取 mid 的值 if(ST[mid]==key) return mid; //假设定值 key 等于 ST[mid]则返回待查元素所在位置 else if (key<ST[mid]) high=mid-1; //不然又假设定值 key 小于 ST[mid]则让 high 指向mid 的前面一位 else low=mid+1; //再不然则让 low 指向 mid 的后面一位 } return -1; //查找不成功返回-1 } int main(){ int i, skey;//输入数据 printf("请输入数组长度〔不小于 5〕:"); scanf("%d", &Dnum); printf("请按照从小到大的顺序输入数据序列:\n"); for(i=... ``` 实验结果: 通过实验,我们可以看到折半查找算法的高效性和实用性。该算法可以明显减少比较次数,提高查找效率。我们可以通过输入不同数据来测试该算法的正确性和实用性。
- 粉丝: 103
- 资源: 6万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助