二分查找

2020年1月17日 870点热度 0人点赞 0条评论

二分查找

时间: 1ms        内存:128M

描述:

输入不多于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

提示:

参考答案:

解锁文章

没有看到答案?微信扫描二维码可免费解锁文章

微信扫描二维码解锁

使用微信扫描二维码打开广告页面后可以立即关闭,再刷新此页面即可正常浏览此文章

所跳转广告均由第三方提供,并不代表本站观点!

已经扫描此二维码?点此立即跳转

code

这个人很懒,什么都没留下

文章评论