您的位置:首页 > 理论基础 > 数据结构算法

数据结构上机之实验查找

2014-02-21 15:28 162 查看


题目描述

在一个递增的序列里,查找元素是否存在,若存在输出YES,不存在输出NO.


输入

本题多组数据,首先输入一个数字n,然后输入n个数,数据保证数列递增,然后再输入一个查找数字。


输出

若存在输出YES,不存在输出NO.


示例输入

4
1 3 5 8
3



示例输出

YES



此题用二分法可以解答,但由于数据量小,用二分法反而相对复杂。这里给出两中方法的程序

二分法:
#include<stdio.h>

int main()

{

int n,p[100000],t,left,right,mid,k,i;

while(scanf("%d",&n)!=EOF)

{

t=0;

for(i=0;i<n;i++)

{

scanf("%d",&p[i]);

}

scanf("%d",&k);

left=0;

right=n-1;

while(left<=right)

{

mid=(left+right)/2;

if(k==p[mid])

{

t=1;

break;

}

a

if(k<p[mid])

right=mid-1;

else

left=mid+1;

}

if(t)

printf("YES\n");

else

printf("NO\n");

}

普通方法:
#include<stdio.h>

int main()

{

int n,i,a[100000],k,t;

while(scanf("%d",&n)!=EOF)

{

for(i=0;i<n;i++)

{

scanf("%d",&a[i]);

}

scanf("%d",&k);

t=0;

for(i=0;i<n;i++)

{

if(a[i]==k)

{

printf("YES\n");

t=1;

}

else continue;

}

if(t==0)

printf("NO\n");

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: