前言
欢迎大家能看到我的文章,这篇文章讲解了关于二分的一些内容,如遇不足,欢迎指出!(不要喷我┭┮﹏┭┮)
注:部分内容可能源于其他博主!
正文
这里为大家找了一道关于二分的题:东方博宜1236
先让我们读一下题。
请在一个有序递增数组中(不存在相同元素),采用二分查找,找出值 x 的位置,如果 x 在数组中不存在,请输出 -1!
那么,我们就可以根据题意写出以下代码:
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
using namespace std;
int a[1000001];
int main(){
int n,x,m,l,r,mid;
cin>>n;
for(int i=1;i<=n;i++)
{cin>>a[i];
}
cin>>x;//x是搜索的元素,找到就会输出下标位置。
l=1;r=n;
while(l<=r){
mid=(l+r)/2;
if(a[mid]==x){cout<<mid;return 0;}
if(a[mid]>x) {(r=mid-1);}
if(a[mid]<x){(l=mid+1);}
}
cout<<"-1";
return 0;
}
这个代码不难,内含二分模版,可以自行吸收!