递推递归专题 P 二分查找
2017-04-01 18:20
253 查看
1、简单描述
给出含有n个数的上升序列,编号从1到n,然后给出q次询问,每次询问一个数x是否在上升序列中,如果在输出该数的编号,如果不在输出-1.
2、思路
二分查找,优化查找,减少计算量
给出含有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; }
二分查找,优化查找,减少计算量