数据结构上机实验之二分查找
Time Limit: 1000MS Memory limit: 65536K
题目描述
在一个递增的序列里,查找元素是否存在,若存在输出YES,不存在输出NO.
输入
本题多组数据,首先输入一个数字n,然后输入n个数,数据保证数列递增,然后再输入一个查找数字。
输出
若存在输出YES,不存在输出NO.
示例输入
4 1 3 5 8 3
示例输出
YES
提示
来源
cz
示例程序
- #include<stdio.h>
- int erfen(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)
- {
- return mid;
- }
- if(a[mid]>key)
- return erfen(a,low,mid-1,key);
- else
- return erfen(a,mid+1,high,key);
- }
- return -1;
- }
- int main()
- {
- int i,n,key,a[100001],w;
- while(scanf("%d",&n)!=EOF)
- {
- for(i=0;i<n;i++)
- {
- scanf("%d",&a[i]);
- }
- scanf("%d",&key);
- w = erfen(a,0,n-1,key);
- if(w>=1)
- {
- printf("YES\n");
- }
- else
- printf("NO\n");
- }
- return 0;
- }