【C++】第5章:(一)查找算法(数组应用)

本文介绍了C++中如何实现折半查找算法,适用于已排序的数据。通过设定查找条件low<high,根据key与中间元素a[mid]的比较结果更新查找范围,直至找到目标值或查找范围为空。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

折半查找

查找的数据必须是顺序排列
查找的条件:low<high

key的一次查找过程:
mid=(high+low)/2;

1.key>a[mid],没有找到,low=mid+1,结束本次查找

2.key<a[mid],没有找到,high=mid-1,结束本次查找

3.key==a[mid],找到,输出mid,全部查找结束

代码如下:

#include <iostream>
using namespace std;
int main()
{
 const int N=10;
 int r[N];
 int i,low,high,find=0,key,mid;
 cout<<"请按从大到小的顺序输入N个整数:";
 for(i=0;i<10;i++)
 cin>>r[i];
 cout<<"请输入要查找的整数:";
 cin>>key;
 low=0;high=N-1;
 while(low<=high){//在low<=high的查找条件下一直循环折半
  mid=(low+high)/2;
  if(key==r[mid]){
   find=1;break;
  }
  else if(key<r[mid]){
   high=mid-1;
  }
  else if(key>r[mid]){
   low=mid+1;
  }
 }
 if(find==1) cout<<"所找数据在数组第"<<mid+1<<"位\n";
 else cout<<"所找数据不在数组中\n"; 
 return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值