二分查找 题解
2016-03-24 20:20
253 查看
数据结构上机实验之二分查找
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
在一个递增的序列里,查找元素是否存在,若存在输出YES,不存在输出NO.输入
本题多组数据,首先输入一个数字n(n>=100000),然后输入n个数,数据保证数列递增,然后再输入一个查找数字。输出
若存在输出YES,不存在输出NO.示例输入
4 1 3 5 8 3
示例输出
YES
心得:二分查找之前数组必须是有序的,每次都和中间值比较,逐步缩小范围。。 (坚信努力会有收获! 每天一个算法,加油!)
代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[100020],n,m,i;
int low,high,mid;
while(~scanf("%d",&n))
{
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&m);
low=0;
high=n;
mid=(low+high)/2;
while(low<=high)
{
if(a[mid]<m)
{
low=mid+1;
}
else if(a[mid]>m) high=mid-1;
else break;
mid=(low+high)/2;
}
if(low<=high) printf("YES\n");
else printf("NO\n");
}
return 0;
}
相关文章推荐
- 《leetCode》:Largest Number
- Exception:在spring上用mybatis时报错
- windows客户端开发--客户端国际化中特殊处理(日期等)
- windows客户端开发--客户端国际化中特殊处理(日期等)
- linux系统调用过程分析与调试
- 经典排序之 快速排序
- 详解C#中的反射
- form_for的关系
- 【HPU】[1737]老王特警队
- MY GOAL
- 单片机设计经验设计技巧集锦
- java.堆栈浅层小知识
- POJ 1611 (并查集,按秩合并)
- Intellj IDEA 启动参数调优
- linux下测试磁盘的读写IO速度
- ffmpeg /x264视频流编解码末尾丢帧问题分析和解决
- grep用法
- poj 2506 Tiling 《大数加法+递推》
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) B. Bear and Compressing
- 最大公约数