二分查找算法详解(折半查询)
一、基本思想
二分查找是一种用于有序数列的折半查找算法。二分查找优点是比较次数少,查找速度快,平均性能好;时间复杂度为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
二分查找算法详解(折半查询)相关推荐
- 二分查找算法详解(附代码)
二分查找算法详解(附代码) 注: 现有一个升序 不重复的数组 查询target是否在此数组中并返回序号 使用条件 使用二分算法的两个条件: 有序 不重复 混淆处 二分算法两种方式容易弄混淆的地方:就是 ...
- 二分查找算法详解(经典二分和左右边界查找)
目录 二分查找算法 1. 二分查找算法框架 2. 经典二分查找算法 问题1. 为什么while循环中使用<=号而不是用<号,右边区间right为什么要对数组大小减一? 问题2. 为什么 l ...
- python实现二分查找代码+详解
python实现二分查找代码+详解 一.规定函数值 函数输入值 li=[1,2,3,4,5,6,7,8,9]#输入的集合 val=4#要查找的值 函数内部值 left=0#代表集合中第一个值的位置 r ...
- Python二分查找/折半查找算法详解--(面试常考)
https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) 二分查找也称折 ...
- python二分法查找算法_顺序查找算法和折半(二分法)查找算法,C语言查找算法详解...
查找是指在大量的信息中寻找一个特定的信息.在计算机中,查找是非常重要的一个应用,比如"百度".查找算法的好坏直接影响查找的速度. 常用的查找算法主要有顺序查找和折半(二分法)查找: ...
- 有序数组二分查找java_详解Java数据结构和算法(有序数组和二分查找)
一.概述 有序数组中常常用到二分查找,能提高查找的速度.今天,我们用顺序查找和二分查找实现数组的增删改查. 二.有序数组的优缺点 优点:查找速度比无序数组快多了 缺点:插入时要按排序方式把后面的数据进 ...
- C语言【二分查找】详解
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 二分 文章目录 前言 一.[二分查找]的步骤 二.[二分查找]的注意事项 三.举例详解[二分查找] 前言 一.[二分查找]步骤 二.[ ...
- java的数组查找算法_java数组、排序算法、查找算法详解
1.为什么定义数组要采用type[] arrayName;这种方式? 因为这种方式具有很好的可读性,使用这种方式很容易就可以理解这是定义一个变量,其中变量名是arrayName,变量的类型是type[ ...
- 【摘抄】百度分词算法详解:查询处理以及分词技术
随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能.技术和日流量.作为企业,会根据搜索引擎的知名度以及日流量来选择是否要投放广告等:作为 普通网民,会根据搜索引擎的性能和技术来选择自己喜欢的引 ...
- 快速排序和二分查找时间复杂度详解
因为二分查找每次排除掉一半的不适合值,所以对于n个元素的情况:一次二分剩下:n/2两次二分剩下:n/2/2 = n/4...m次二分剩下:n/(2^m)在最坏情况下是在排除到只剩下最后一个值之后得到结 ...
最新文章
- 文化内涵和历史深度:PC
- 享乐不尽 聚 VR一体机艳冠群雄
- UNIX重定向--dup(2)函数
- 图像识别中距离变换的原理及作用详解,并附用OpenCV中的distanceTransform实现距离变换的代码
- 一个资深投行女销售和低调IT创业男的故事
- pandas python2.7_python-2.7 – Pandas Seaborn安装
- 【UESTC 594】我要长高
- 复制出来的文本都是大写_vi或vim怎么复制粘贴
- webgl 着色器_如何在WebAssembly中使用WebGL着色器
- 图说Oracle基础知识
- QML笔记-自定义控件的2种点击方式(推荐第二种)
- 在PowerShell中批量卸载设备
- linux中mysql基本操作
- LeetCode Array 最长回文子串-数组和string题目
- 詹姆斯titan_再见,詹姆斯!
- 蓝色音箱改装电源_JBL便携/无线音箱排行榜,JBL便携/无线音箱十大排名推荐
- ASP.NET删除服务器端文件,asp.net删除服务器文件
- Java开发,需要学习什么内容?
- 屏幕录制专家linux版,Linux平台好用的十款屏幕录制工具
- android 自动打开wifi热点