• 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;
    }

  • 相关阅读:
    Linkedin工程师是如何优化他们的Java代码的
    如何调试 Android 上 HTTP(S) 流量
    Facebook工程师是如何改进他们Android客户端的
    modified: xxx(modified content, untracked content)
    在Android工程中加入AIDL文件时,gen目录生成的文件报错-问题解决
    Ubuntu14.04LTS下使用eclipse搭建Cocos2d-x的Android环境
    Ubuntu Linux下安装Oracle JDK
    查看Android源码版本
    Ubuntu Linux下安装Oracle JDK
    Android Initializing a Build Environment
  • 原文地址:https://www.cnblogs.com/im0qianqian/p/5989624.html
Copyright © 2020-2023  润新知