数据结构上机实验之二分查找

来源:互联网 发布:伊戈达拉数据百度 编辑:程序博客网 时间:2024/05/17 04:00

Time Limit: 1000MS Memory limit: 65536K

题目描述

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

输入

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

输出

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

示例输入

41 3 5 83

示例输出

YES
#include<stdio.h>#include<stdlib.h>int main(){    int n,*s;    int left,right,mid;    int x,i;    while(scanf("%d",&n)==1&&n>0)    {        s=(int *)malloc(n*sizeof(int));        if(s==NULL)            exit(0);        for(i=0;i<n;i++)            scanf("%d",&s[i]);        scanf("%d",&x);        left=0;        right=n-1;        while(left<=right)        {            mid=(left+right)/2;            if(s[mid]==x)            {                printf("YES\n");                break;            }            else if(s[mid]<x)                left=mid+1;            else right=mid-1;        }        if(left>right)            printf("NO\n");    }}


0 0
原创粉丝点击