首页 > 其他 > 详细

二分思想

时间:2020-08-24 20:59:08      阅读:85      评论:0      收藏:0      [点我收藏+]

二分,一种查找方式,用于在有序数列中查找一个数。每次通过比较已知范围的中间数和所求数来不断缩小范围,并在范围足够小时求出这个数。
思路如图:

技术分享图片

 

 


根据这个,我么可以写出下面这个基础代码:
(在数组a中判断能否找到s)
#include<bits/stdc++.h>
using namespace std;
int n;
int a[100010];
int s;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
cin>>s;
int l,r;
for(int i=1;i<=n-1;i++)
{
l=i+1;
r=n;
while(r-l>1)//如果左右边界距离大于1则执行
{
int mid=(l+r)/2;
if(s>a[mid])//如果目标数大于中间值
{
l=mid;//左边界更新为中间值
}
else
{
r=mid;//右边界更新为中间值
}
}
if(s==a[l]||s==a[r])扫尾,判断边界是否满足条件
{
cout<<"Yes";
return 0;
}
}
cout<<"No";
return 0;
}
可以自己理解一下。

二分思想

原文:https://www.cnblogs.com/Z-J-B-/p/13555972.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!