题目名字 二分
题意
给出n个数字,找出m的下标并输出,不能找到输出-1;
思路
利用二分,先定义n,m,
要先const int x=1exxx(范围取决于题目);
和数组a【x】
再定义一个数组来进行二分查找判断,套用那个模板
能找到就return mid;
不能找到就return -1;主函数输入n,m
输出这个需要调用的函数注意一下while循环的条件是l<=r;
算法一:二分查找
代码
#include<iostream>
using namespace std;
const int x=1000000;
int n,m;
int a[x];
int binarysearch(){
int l=0,r=n;
while(l<=r){
int mid=l+r>>1;
if(a[mid]==m){//循环判断mid如果能找到直接返回mid,
return mid;
}
else if(a[mid]>m){
r=mid-1;
}
else if(a[mid<m]){
l=mid+1;
}
}
return -1;//如果不能找到直接返回-1;
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>a[i];
}
cout<<binarysearch();//调用这个函数输出;
return 0;
}