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

YTU 2852: 二分查找的更多相关文章

  1. jvascript 顺序查找和二分查找法

    第一种:顺序查找法 中心思想:和数组中的值逐个比对! /* * 参数说明: * array:传入数组 * findVal:传入需要查找的数 */ function Orderseach(array,f ...

  2. Java实现的二分查找算法

    二分查找又称折半查找,它是一种效率较高的查找方法. 折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小 于该中点 ...

  3. 从一个NOI题目再学习二分查找。

    二分法的基本思路是对一个有序序列(递增递减都可以)查找时,测试一个中间下标处的值,若值比期待值小,则在更大的一侧进行查找(反之亦然),查找时再次二分.这比顺序访问要少很多访问量,效率很高. 设:low ...

  4. java实现二分查找

    /** * 二分查找 * @param a * @param n * @param value * @return * @date 2016-10-8 * @author shaobn */ publ ...

  5. 最新IP地址数据库 二分逼近&二分查找 高效解析800万大数据之区域分布

    最新IP地址数据库  来自 qqzeng.com 利用二分逼近法(bisection method) ,每秒300多万, 比较高效! 原来的顺序查找算法 效率比较低 readonly string i ...

  6. c#-二分查找-算法

    折半搜索,也称二分查找算法.二分搜索,是一种在有序数组中查找某一特定元素的搜索算法. A 搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束: B 如果某一特定元素大于或者小 ...

  7. 【Python】二分查找算法

    二分查找:在一段数字内,找到中间值,判断要找的值和中间值大小的比较.如果中间值大一些,则在中间值的左侧区域继续按照上述方式查找.如果中间值小一些,则在中间值的右侧区域继续按照上述方式查找.直到找到我们 ...

  8. PHP实现文本快速查找 - 二分查找

    PHP实现文本快速查找 - 二分查找法 起因 先说说事情的起因,最近在分析数据时经常遇到一种场景,代码需要频繁的读某一张数据库的表,比如根据地区ID获取地区名称.根据网站分类ID获取分类名称.根据关键 ...

  9. java二分查找举例讨论

    最近做笔试题有这么一个关于二分查找的例子. 给一个有序数组,和一个查找目标,用二分查找找出目标所在index,如果不存在,则返回-1-(其应该出现的位置),比如在0,6,9,15,18中找15,返回3 ...

随机推荐

  1. 创建ArrayList集合对象并添加元素

    ArrayListDemo.java import java.util.ArrayList; /* * 为什么出现集合类: * 我们学习的是面向对象编程语言,而面向对象编程语言对事物的描述都是通过对象 ...

  2. luogu1494 [国家集训队]小Z的袜子

    #include <algorithm> #include <iostream> #include <cstdio> #include <cmath> ...

  3. cherrypy入门

    主要是一个简单的cherrypy hello例子 import cherrypy from jinja2 import Environment, FileSystemLoader import os ...

  4. mysql异常Incorrect string value: '\xE6\xB5\x8B\xE8\xAF\x95' for column 'region_name'

    Incorrect string value: '\xE6\xB5\x8B\xE8\xAF\x95' for column 'region_name' insert语句加的该字段有汉字,乱码造成的 解 ...

  5. PTA 05-树9 Huffman Codes (30分)

    题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/671 5-9 Huffman Codes   (30分) In 1953, David ...

  6. 使用RMAN恢复数据库

    使用RMAN恢复数据库 由于需要搭建一个测试环境,把上周末的一个全备拿出来做恢复,首先备份一下测试库上现有的重要表: exp banping/bangping@ERPTEST file=f:\2009 ...

  7. hdu 2736 Average distance

    传送门 Average distance Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  8. Linux kernel 内核学习路线

    看了下各位大神的推荐路线,总结如下: 0. 跟着项目走: 1. 学会用.熟练用linux系统: 2. Linux Kernel Development. 3. Understanding the Li ...

  9. virtualBox下Centos系统扩展磁盘空间

    (1)查看空间容量: 打开windows命令终端.然后打开virtualbox安装目录,找到VBoxManage.exe,拖动到终端里面.输入命令:list hdds,回车. 我安装的位置是 : C: ...

  10. poj3905 2sat!

    这次已经不是2sat的问题了,相信2sat已经不是问题了,最后一题2sat,竟然跪在输入上! 千万注意scanf(%c)!读入!!!!有空格也读啊!!!读入+ -一定要用字符读啊??笨死算了!被人水死 ...