数据结构上机实验之顺序查找
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
在一个的序列里,查找元素是否存在,若存在输出YES,不存在输出NO.
输入
本题多组数据,首先输入一个数字n,然后输入n(n<=1000)个数,然后再输入一个查找数字。
输出
若存在输出YES,不存在输出NO.
示例输入
4 1 3 5 8 3
示例输出
YES
提示
来源
cz
示例程序
- 提交
- 状态
- 讨论
#include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <algorithm> using namespace std; int a[100001]; int cmp(const void *a,const void *b) { return *(int *)a-*(int *)b; } int binsearch(int a[],int s,int t,int k) { int m,h=t,l=s; while(s<=t) { m=l+(h-l)/2; if(a[m]==k) return k; else if(a[m]>k) return binsearch(a,l,m-1,k); else if(a[m]<k) return binsearch(a,m+1,h,k); } return -1; } int main() { int n,i,j,k,t; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) { scanf("%d",&a[i]); } scanf("%d",&k); qsort(a,n,sizeof(a[0]),cmp); /*for(i=0;i<n;i++) { printf("%d ",a[i]); } printf("\n");*/ if(binsearch(a,0,n-1,k)!=-1) { printf("YES\n"); } else { printf("NO\n"); } } return 0; }