题目描述
在有序序列中查找某一元素x。
输入
首先输入一个正整数n(n<=100000),表示该序列有n个整数,然后按从小到大的顺序输入n个整数;
接着是一个正整数m,表示有m次查找;
最后是m个整数,表示m个要查找的整数x。
输出
对于每一次查找,有一行输出。若序列中存在要查找的元素x,则输出元素x在序列中的序号(序号从0开始);若序列中不存在要查找的元素x,则输出"Not found!"。
#include<iostream> #include<cstdio> using namespace std; int binary_search(int key,int a[],int n) { int low=0,high=n; while(low<=high) { int mid=(low+high)/2; if(a[mid]==key) { cout<< mid<<endl; return 0; } else if(a[mid]<key) { low=mid+1; } else { high=mid-1; } } cout<<"Not found!"<<endl; return 0; } int main() { int n,temp,a[100001],b; cin>>n; for(int i=0;i<n;i++) { scanf("%d",&a[i]); } int m; cin>>m; for(int i=0;i<m;i++) { scanf("%d",&temp); binary_search(temp,a,n); } return 0; }