一、基本思想

二分查找是一种用于有序数列的折半查找算法。二分查找优点是比较次数少,查找速度快,平均性能好;时间复杂度为O(lgN)。因此二分查找也成为了面试中的常问问题。

二、算法分析

二分查找就是将查找的键和子数组的中间键作比较,如果被查找的键小于中间键,就在左子数组继续查找;如果大于中间键,就在右子数组中查找,否则中间键就是要找的元素。

三、编码实现

package search;public class BinarySearch {public static void main(String[] args) {int[] array = {1,2,3,4,6,6,7,8,9,10};int key = 6;System.out.println("元素下标值为:"+binarySearch(array, key));}public static int binarySearch(int[] arr,int key){int left = 0;int right = arr.length - 1;while (left <= right) {//取出遍历范围的中间值索引int mid = (left + right) / 2;//如果中间值大于我们需要查找的数值,我们就将查找区间的右边界缩到中间值索引的左边if (arr[mid] > key) {right = mid - 1;//如果中间值恰好是我们需要查找的数组,直接返回}else if(arr[mid]==key){return mid;}//如果中间值小于我们需要查找的数值,我们就将查找区间的左边界缩到中间值索引的右边else {left = mid + 1;}}if (right >=0 && arr[right]==key) {return right;}//如果没有查找到值,返回-1return -1;}
}

四、结果查看

元素下标值为:4

二分查找算法详解(折半查询)相关推荐

  1. 二分查找算法详解(附代码)

    二分查找算法详解(附代码) 注: 现有一个升序 不重复的数组 查询target是否在此数组中并返回序号 使用条件 使用二分算法的两个条件: 有序 不重复 混淆处 二分算法两种方式容易弄混淆的地方:就是 ...

  2. 二分查找算法详解(经典二分和左右边界查找)

    目录 二分查找算法 1. 二分查找算法框架 2. 经典二分查找算法 问题1. 为什么while循环中使用<=号而不是用<号,右边区间right为什么要对数组大小减一? 问题2. 为什么 l ...

  3. python实现二分查找代码+详解

    python实现二分查找代码+详解 一.规定函数值 函数输入值 li=[1,2,3,4,5,6,7,8,9]#输入的集合 val=4#要查找的值 函数内部值 left=0#代表集合中第一个值的位置 r ...

  4. Python二分查找/折半查找算法详解--(面试常考)

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究)   二分查找也称折 ...

  5. python二分法查找算法_顺序查找算法和折半(二分法)查找算法,C语言查找算法详解...

    查找是指在大量的信息中寻找一个特定的信息.在计算机中,查找是非常重要的一个应用,比如"百度".查找算法的好坏直接影响查找的速度. 常用的查找算法主要有顺序查找和折半(二分法)查找: ...

  6. 有序数组二分查找java_详解Java数据结构和算法(有序数组和二分查找)

    一.概述 有序数组中常常用到二分查找,能提高查找的速度.今天,我们用顺序查找和二分查找实现数组的增删改查. 二.有序数组的优缺点 优点:查找速度比无序数组快多了 缺点:插入时要按排序方式把后面的数据进 ...

  7. C语言【二分查找】详解

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 二分 文章目录 前言 一.[二分查找]的步骤 二.[二分查找]的注意事项 三.举例详解[二分查找] 前言 一.[二分查找]步骤 二.[ ...

  8. java的数组查找算法_java数组、排序算法、查找算法详解

    1.为什么定义数组要采用type[] arrayName;这种方式? 因为这种方式具有很好的可读性,使用这种方式很容易就可以理解这是定义一个变量,其中变量名是arrayName,变量的类型是type[ ...

  9. 【摘抄】百度分词算法详解:查询处理以及分词技术

    随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能.技术和日流量.作为企业,会根据搜索引擎的知名度以及日流量来选择是否要投放广告等:作为 普通网民,会根据搜索引擎的性能和技术来选择自己喜欢的引 ...

  10. 快速排序和二分查找时间复杂度详解

    因为二分查找每次排除掉一半的不适合值,所以对于n个元素的情况:一次二分剩下:n/2两次二分剩下:n/2/2 = n/4...m次二分剩下:n/(2^m)在最坏情况下是在排除到只剩下最后一个值之后得到结 ...

最新文章

  1. 文化内涵和历史深度:PC
  2. 享乐不尽 聚 VR一体机艳冠群雄
  3. UNIX重定向--dup(2)函数
  4. 图像识别中距离变换的原理及作用详解,并附用OpenCV中的distanceTransform实现距离变换的代码
  5. 一个资深投行女销售和低调IT创业男的故事
  6. pandas python2.7_python-2.7 – Pandas Seaborn安装
  7. 【UESTC 594】我要长高
  8. 复制出来的文本都是大写_vi或vim怎么复制粘贴
  9. webgl 着色器_如何在WebAssembly中使用WebGL着色器
  10. 图说Oracle基础知识
  11. QML笔记-自定义控件的2种点击方式(推荐第二种)
  12. 在PowerShell中批量卸载设备
  13. linux中mysql基本操作
  14. LeetCode Array 最长回文子串-数组和string题目
  15. 詹姆斯titan_再见,詹姆斯!
  16. 蓝色音箱改装电源_JBL便携/无线音箱排行榜,JBL便携/无线音箱十大排名推荐
  17. ASP.NET删除服务器端文件,asp.net删除服务器文件
  18. Java开发,需要学习什么内容?
  19. 屏幕录制专家linux版,Linux平台好用的十款屏幕录制工具
  20. android 自动打开wifi热点

热门文章

  1. Mac OS X中Apache开启ssl
  2. 开始我的.NET的学习旅程
  3. 20佳非常有创意的About页面设计
  4. jQuery ctrl+Enter shift+Enter
  5. Google的21道面试问题
  6. 孙鑫VC学习笔记:第十一讲 (五) 如何使窗口具有滚动条
  7. python3.7如何使用enum_python3 enum模块
  8. 拓端tecdat|R语言文本挖掘NASA数据网络分析,tf-idf和主题建模
  9. 【大数据部落】R语言RFM模型在电商行业的应用
  10. jQuery学习笔记02