• 数据结构上机实验之二分查找【二分查找】【递归与非递归算法示例】


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

    Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

    题目描述

    题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2039

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

    输入

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

    输出

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

    示例输入

    4
    1 3 5 8
    3

    示例输出

    YES

    提示

    代码:

     1 #include<iostream>
     2 #include<string.h>
     3 using namespace std;
     4 int f[5000000];
     5 int binsearch(int l,int e,int key);
     6 int binsearchx(int l,int e,int key);
     7 int main()
     8 {
     9     int n;
    10     while(cin>>n)
    11     {
    12         int i;
    13         for(i=1;i<=n;i++)
    14             cin>>f[i];
    15         int key;
    16         cin>>key;
    17         int flag=-1;
    18         //flag=binsearch(1,n,key);
    19         flag=binsearchx(1,n,key);
    20         if(flag==-1)cout<<"NO"<<endl;
    21         else cout<<"YES"<<endl;
    22     }
    23     return 0;
    24 }
    25 int binsearch(int e,int l,int key)//二分查找非递归算法
    26 {
    27     int low=1,high=l;
    28     int mid;
    29     while(low<=high)
    30     {
    31         mid=(low+high)/2;
    32         if(f[mid]==key)return mid;
    33         else if(key<f[mid])high=mid-1;
    34         else low=mid+1;
    35     }
    36     return -1;
    37 }
    38 int binsearchx(int e,int l,int key)//二分查找递归算法
    39 {
    40     int mid=(e+l)/2;
    41     if(f[mid]==key)return mid;
    42     else if(f[mid]>key)return binsearch(e,mid-1,key);
    43     else if(f[mid]<key)return binsearch(mid+1,l,key);
    44     return -1;
    45 }
    View Code
  • 相关阅读:
    spring3 上配置quartz 任务调度
    读取.properties配置信息
    mybatis 返回值
    div根据鼠标的移入移除显示隐藏
    jquery日期控件+时分秒
    mysql 插入多条记录,重复值不插入
    Hadoop中Writable类
    Hadoop中WritableComparable 和 comparator
    Hadoop序列化
    Hadoop压缩之MapReduce中使用压缩
  • 原文地址:https://www.cnblogs.com/kuangdaoyizhimei/p/3485470.html
Copyright © 2020-2023  润新知