zoukankan      html  css  js  c++  java
  • YTU 2852: 二分查找

    2852: 二分查找

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 215  解决: 79

    题目描述

    输入不多于20个升序排列的整数,以及一个待查找的数key,输出key在序列中的位置(从0开始计位序)。查找采用二分查找的方法进行,请将下面的程序补充完整。
    #include <iostream>
    using namespace std;
    const int SIZE=20;
    int binary_search(int arr[], int n, int k);
    int main()
    {
       int d[SIZE];
       int index, key, num=0;
       cin>>key;
       while(cin>>d[num])
          num++;
       index = binary_search(d, num, key);
       if(index >= 0)
         cout<<index<<endl;
       else
         cout<<"NO"<<endl;
       return 0;
    }
    //提交全部程序代码
    int binary_search(int arr[], int n, int k)
    {
       int i=-1;
       int low=_____(1)_____,high=_____(2)_____,mid;
       while(low<=high)
       {
         mid=______(3)________;
         if(arr[mid]==k)
         {
            i=mid;
            break;
         }
         else if(_____(4)_____)
            high=mid-1;
         else
          _______(5)__________;
      } 
      return i;
    }

    输入

    先输入要查找的数
    下一行输入升序排列的若干整数(不超过20个),以CTRL-Z结束

    输出

    若要查找的数在序列中,输出其在序列中的位置(从0开始计数),若不能找到,输出NO

    样例输入

    45
    23 36 45 76 81 88 89 91

    样例输出

    2

    你  离  开  了  ,  我  的  世  界  里  只  剩  下  雨  。  。  。

    #include <iostream>
    using namespace std;
    const int SIZE=20;
    int binary_search(int arr[], int n, int k);
    int main()
    {
        int d[SIZE];
        int index, key, num=0;
        cin>>key;
        while(cin>>d[num])
            num++;
        index = binary_search(d, num, key);
        if(index >= 0)
            cout<<index<<endl;
        else
            cout<<"NO"<<endl;
        return 0;
    }
    //提交全部程序代码
    int binary_search(int arr[], int n, int k)
    {
        int i=-1;
        int low=0,high=n-1,mid;
        while(low<=high)
        {
            mid=low+(high-low)/2;
            if(arr[mid]==k)
            {
                i=mid;
                break;
            }
            else if(arr[mid]>k)
                high=mid-1;
            else
                low=mid+1;
        }
        return i;
    }

  • 相关阅读:
    10_23自定义签发token,其他drf组件
    10_22频率认证和jwt
    10_21 三大认证
    vue2.0实现过滤
    windows下零基础gulp构建
    vue1.0+vue2.0实现选项卡
    数组去重方法
    stop()在animate中的用法
    两边固定,中间自适应
    JS获取宽度高度大集合
  • 原文地址:https://www.cnblogs.com/im0qianqian/p/5989624.html
Copyright © 2011-2022 走看看