您的位置:首页 > 其它

递推递归专题 P 二分查找

2017-04-01 18:20 211 查看
1、简单描述

给出含有n个数的上升序列,编号从1到n,然后给出q次询问,每次询问一个数x是否在上升序列中,如果在输出该数的编号,如果不在输出-1.

2、思路

# include <bits/stdc++.h>
using namespace std;
int a[3000010];
int n;
int f(int m)
{
int l = 1, r = n;
int mid;
while(l != r)
{
mid = (l + r) / 2;
if(a[mid] < m)
l = mid + 1;
else
r = mid;
}
if(a[l] == m)
return l;
else
return -1;
}

int main()
{

cin >> n;
for(int i = 1; i <= n; i++)
scanf("%d", &a[i]);
int t, m;
cin >> t;
while(t--)
{
cin >> m;
cout << f(m) << endl;
}

return 0;
}

二分查找,优化查找,减少计算量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: