NOJ 1001 二分查找
来源:互联网 发布:网络尖兵破解软件 编辑:程序博客网 时间:2024/06/05 09:52
2016.10.28
【题目描述】
1001.二分查找
时限:1000ms 内存限制:10000K 总时限:3000ms
描述
给定一个单调递增的整数序列,问某个整数是否在序列中。
输入
第一行为一个整数n,表示序列中整数的个数;第二行为n(n不超过10000)个整数;第三行为一个整数m(m不超过50000),表示查询的个数;接下来m行每行一个整数k。
输出
每个查询的输出占一行,如果k在序列中,输出Yes,否则输出No。
输入样例
5
1 3 4 7 11
3
3
6
9
输出样例
Yes
No
No
【解题思路】
二分查找,条件是序列必须有序,然后设置左右边界,每次比较中间值与目标值的大小,以确定左右边界。时间复杂度O(logn)
【代码实现】
#include <stdio.h>void binary_search(int [], int ,int );int main(void){ int i, n, m, key; int a[10005]; scanf("%d", &n); for (i = 1; i <= n; ++i) scanf("%d", &a[i]); scanf("%d", &m); while (m--) { scanf("%d", &key); binary_search(a, n, key); } return 0;}void binary_search(int a[], int n, int key){ int l, r, mid; int flag = 0; l = 1; r = n; while (l <= r) { mid = (l + r) >> 1; if (a[mid] == key) { flag = 1; break; } else if (a[mid] < key) l = mid + 1; else r = mid - 1; } if (flag) printf("Yes\n"); else printf("No\n");}
【心得体会】
0 0
- NOJ 1001 二分查找
- 算法练习-NOJ-1001-二分查找
- NWPU-NOJ-二分查找
- NOJ(1001)-递归与分治算法-二分查找
- noj算法题——二分查找
- NOJ——1649Find Sum(二分查找)
- 二分 NOJ 1567
- NOJ-----1651二分
- 1001-二分查找
- 1001 二分查找
- NOJ 1616Music Notes 二分
- 二分枚举 +贪心 NOJ 680 摘枇杷
- 二分 最大值最小化||最小值最大化 NOJ 1133
- Noj Red packet 1651 (二分)
- Noj Red packet -1651 (二分)
- NOJ 1651 Red packet(二分)
- 二分查找
- 二分查找
- hdu 2102: A计划(BFS+跨层小剪枝)
- Sessions and Process Groups
- 下拉刷新
- 用js生成N个不一样的随机数
- 百度前端学院2015task2自学总结
- NOJ 1001 二分查找
- 2014ACM/ICPC亚洲区鞍山赛区现场赛 题解
- Servlet的生命周期
- 除法求逆元(扩展欧几里德和费马小定理)
- php源码之路第三章第六节( 变量的作用域和global语句)
- centos 7.2 防火墙配置
- 用string类构造器创建对象
- [已解决]mac android studio安装报错java.lang.RuntimeException: java.lang.IllegalArgumentException: Argument
- 数据结构看书笔记(九)--图的存储结构及遍历