题目描述

在一个升序排列的整数数字序列中查找,并返回相应的查找结果。

输入

每个测试用例由多行组成,第一行是两个整数n和m,其中,1<=n,m<=1000000。

自第二行起一共有n+m个整数,其中前面n个整数代表升序排列的有序序列,随后的m个整数是待查询的数。n+m个整数的取值在范围1到10^12(10的12次方)之间。

输出

对于每个待查询的数,如果在有序序列中则输出"yes",否则输出"no",每行输出一个查询结果。

样例输入

5 3
6 23 45 56 586
33 66 6

样例输出

no
no
yes

提示

1、本题的数据超过了int的表示范围,要用64位数据。
1)在VC6中调试,变量定义用__int64类型,输入输出格式用%I64d。(__int64前是2条下划线,%I64d中的I是字母i的大写)
2)在windows版的Codeblocks中调试,变量定义用__int64类型或long long,输入输出格式用%I64d
3)在linux环境下的Codeblocks中调试或在OJ上提交时,变量定义只能用long long类型,输入输出格式用%lld
2、数组占内存超过1M,请开全局数组

代码实现

此代码可以通过oj 的测试,不过对于题目要求来说耗时比较长,有待优化


#include <iostream>
using namespace std;typedef long long  InfoType;
//#define long long  a[10];int search_bin (InfoType a[],long long n,long long  key)
{long long low,high;low=1;high=n;while(low<=high){long long  mid=(low+high)/2;if(key==a[mid]){cout << "yes" << endl ;return 0;}else if (key<a[mid])  high=mid-1;else low=mid+1;}cout << "no" << endl ;return 0;
}int main(){long long n,m;// InfoType a[1000];cin >> n >> m;long long key, a[n],b[m];for (int i=1; i<=n; i++){cin >> a[i];}for( int i=0;i<m;i++){cin >> key;b[i]=key;}for( int i=0;i<m;i++){key=b[i];search_bin(a,n,key);}return 0;
}//main

折半查找--hnust oj相关推荐

  1. Ytu oj 折半查找

    题目描述 有n个数(n<=1000000),这n个数已按从大到小顺序存放在一个数组中,然后有T次查询,每次输入一个数,要求用折半查找法找出该数在数组中第一次出现的位置.如果不在数组中输出0. 输 ...

  2. 数据结构与算法(8-2)有序表查找(折半查找(二分查找)、插值查找)

    目录 一.折半查找(二分查找) 二.插值查找 总代码 一.折半查找(二分查找) 原理:一次次折半,不断向着查找值的位置靠近 . 适用场景:有序(必须) 流程:开始时,min标志首,max标志尾,med ...

  3. python123第k序元素查找_Python实现折半查找并用matplotlib实现动态过程可视化

    折半查找是算法中减治策略的基本例子,实现起来也很简单,但是在网上看到的图片教程不觉得很乾巴麽?? 在这里插入图片描述 这是一个简单的实现: def Reduction(lists, k): " ...

  4. 折半查找函数(from 《The C Programming Language》)

    该函数用于判定已排序的数组array中是否存在某个特定的值value.这里假定数组元素以升序排列,如果数组array中包含value,则函数返回value在array中的位置(介于0~n-1之间的一个 ...

  5. 数据结构之二分查找(折半查找)

    数据结构之二分查找(折半查找) 二分查找又称折半查找,优点是次数比较少,查找速度快,平均性能好,其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表.首先 ...

  6. python实现二分查找(折半查找)算法

    python实现二分查找算法 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法.但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列. 查找又称折半 ...

  7. 查找(包括顺序查找和折半查找)

    顺序查找 顺序查找又叫线性查找,主要用于线性表中的查找.顺序查找通常情况下分为对一般无序线性表的查找和对按关键字有序的顺序表的查找.下面进行比较讨论: 1.一般线性表的查找 作为一个直观的查找方法,其 ...

  8. 单链表折半查找c语言,为什么有序的单链表不能进行折半查找

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:为什么有序的单链表不能进行折半查找 问题详情:急!!!!拜托高手解答 等级低 分数不高 请帮帮忙 谢谢了回答:这是由链表的特决定的. ...

  9. 算法 - 折半查找(C#)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 递归实现 ...

最新文章

  1. Linux内核TCP/IP参数分析与调优
  2. Kafka压力测试(写入MQ消息压测和消费MQ消息压测)
  3. 2020-11-30(为什么字符串可以赋值给字符指针变量)
  4. 获取WebView缩放控件,并对其进行改造
  5. vue-resource HTTP API基础
  6. 【Registration of 3D Point Clouds with Low Overlap】
  7. 利用WinRAR自解压功能制作独立exe 程序
  8. python与plc通讯实例_python连接plc 相关实例(示例源码)下载 - 好例子网
  9. 计算机无法连接远程桌面怎么回事,笔者教你远程桌面无法连接怎么办
  10. 微信 Android 热补丁实践演进之路
  11. NYOJ 题目239 月老的难题 (二分图最大匹配-匈牙利算法模板)
  12. 电脑上删除的文件怎么恢复?
  13. Python简笔画——用Turtle库画一只《穿红靴子的小鸭》
  14. 数组14:分离整数各位
  15. 亚马逊差评怎么删?常用的几种删差评方法介绍
  16. C++: 随机生成一个 RxC 列联表(附完整源码)
  17. 使用putty上传下载文件
  18. 魔术师发牌问题(单向循环队列)
  19. Matlab:如何在图像标出特殊点(最大值/最小值)
  20. python 群发邮件数量限制_群发邮件-python学习30

热门文章

  1. strongbox-数论
  2. android开发查漏补缺图
  3. John Ripper的模式和配置
  4. 微信公众号如何变得更好_过去十年,或者说如何在任何事情上变得更好
  5. 简练软考知识点整理-排列活动顺序
  6. Linux RPM 构建实战
  7. 反病毒三大国际权威认证介绍
  8. 小程序制作预算_科普:小程序制作一个需要多少钱?
  9. Watir数据驱动 - Excel
  10. 立创eda学习笔记十一:立创eda、立创商城、嘉立创的区别