二分查找
来源:互联网 发布:注册公司 知乎 编辑:程序博客网 时间:2024/05/23 00:04
题目描述
在一个递增的序列里,查找元素是否存在,若存在输出YES,不存在输出NO.
输入
本题多组数据,首先输入一个数字n(n>=100000),然后输入n个数,数据保证数列递增,然后再输入一个查找数字。
输出
若存在输出YES,不存在输出NO.
示例输入
41 3 5 83
示例输出
YES
简单二分查找,这个题说的是一个递增序列,如果不递增的话,需要先排下序,建议用快排(n比较大),由于好久没手写快拍了,以前是直接调用sort函数,所以这次想写一下(竟然用不到这道题)。
#include<stdio.h>#include<string.h>int n, i;int a[100000+10];void qsort(int a[], int l ,int r){int x=a[l], i=l, j=r;if(l>=r) return;while(i<j){while(i<j && a[j]>=x) j--;a[i] = a[j];while(i<j && a[i]<=x) i++;a[j] = a[i];}a[i] = x;qsort(a, l, i-1);qsort(a, i+1, r);}int Binsearch(int a[], int s, int t, int key){int low = s, high=t, mid;if(s<=t){mid = low+(high-low)/2;if(a[mid]==key){printf("YES\n"); return 0;}if(a[mid]>key){return Binsearch(a, low, mid-1, key);}else return Binsearch(a, mid+1, high, key);}printf("NO\n");return 0;}int main(){ while(~scanf("%d",&n)){int key;for(i=0; i<n; i++)scanf("%d", &a[i]);//qsort(a, 0, n-1);scanf("%d", &key);Binsearch(a, 0, n-1, key);}}
0 0
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- Asp.net学习总结
- iOS求职之OC面试题
- FZU Super A^B mod C
- android 数据变化时notifyDataSetChanged 无效的解决方案
- ios开发编码规范
- 二分查找
- Java概述
- 关于如何复制可执行文件.exe内的文字
- java集合之迭代器Iterator
- uvalive 4329 Ping pong (树状数组)
- VB.NET 章鱼哥出品 —入门基础Button控件的使用详解(二)
- HDU—— 1860 统计字符
- 用CSS实现高度宽度固定比例,宽度不固定
- Java:String转char数组