若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

2852: 二分查找

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,502

题目描述

输入不多于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 <stdio.h>
int main() 
{
    int n,a,i=-1,d=0;
    scanf("%d",&n);
    while(~scanf("%d",&a)) 
    {
        if(a==n)d=i;
        i++;
    }
    if(d!=0)printf("%d",d+1); else printf("NO");
    return 0;
}

解析

暂无

hustoj

发表评论 取消回复

要发表评论,您必须先登录。


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

Skip Dreams孤独患者 原站点
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist