数据结构上机实验之顺序查找
Time Limit: 1000MS Memory limit: 65536K
题目描述
在一个的序列里,查找元素是否存在,若存在输出YES,不存在输出NO.
输入
本题多组数据,首先输入一个数字n,然后输入n(n<=1000)个数,然后再输入一个查找数字。
输出
若存在输出YES,不存在输出NO.
示例输入
4 1 3 5 8 3
示例输出
YES
代码如下,熟悉一下排序的使用方法和STL的简单的运用
#include <iostream> #include <algorithm> #include <cstdio> using namespace std; int a[1000000]; /* int cmp(const void *a,const void *b) { return *(int *)a-*(int *)b; } */ int main() { int n,i; int k; int key,mid,low,high; while(scanf("%d",&n)!=EOF) { int k=-1; low=1; high=n; for(i=1;i<=n;i++) { scanf("%d",&a[i]); } //qsort(a,n,sizeof(a[0]),cmp); sort(a,a+n); scanf("%d",&key); while(low<=high) { mid=(low+high)/2; if(key==a[mid]) { k=mid; break; } else if(key<a[mid]) { high=mid-1; } else if(key>a[mid]) { low=mid+1; } } if(k!=-1) { printf("YES\n"); } else { printf("NO\n"); } } return 0; }