【详解】二分查找改良版(内含java实现)

点击本链接先学习二分查找基础版

二分查找改良版算法思想

在这里插入图片描述

算法实现

public static int binarySearchBalance(int a[],int target) {int i=0,j=a.length;while(j-i>1) {int m=(i+j)>>>1;if(target<a[m]) {j=m;}else {      //包括a[m]<target和a[m]=targeti=m;    //所以m不可以被排除了,i不能等于m+1}}if(a[i]==target){return i;}return -1;}

优缺点

优点:比较次数减少
缺点:无论目标值在数组的什么位置,循环的次数都不变,会一直运行直到j-i>1,即只剩余i这个位置的值有效之后退出

和之前的方法对比

为什么三种方法的循环条件不同

  • i和j都有效时,需要j>i退出循环,即已经没有任何有效的值,i=j时还有一个有效值
  • i有效,j无效时,需要j>=i退出循环
  • i有效,j无效但平衡版,需要留存一个有效值用于退出循环后和target比较,所以j-i>1,留出a[i]这个有效值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/438778.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

巴厘行记(五)——情人崖

欢迎览阅《巴厘行记》系列文章 巴厘行记巴厘行记&#xff08;一&#xff09;——海神庙 巴厘行记&#xff08;二&#xff09;——乌布之夜 巴厘行记&#xff08;三&#xff09;——Auntie和Mudi 巴厘行记&#xff08;四&#xff09;——乌布漫游 巴厘行记&#xff08;五&a…

10s 内得到一个干净、开箱即用的 Linux 系统

安装 使用官方脚本安装我的服务器不行 官方脚本 mkdir instantbox && cd $_ bash <(curl -sSL https://raw.githubusercontent.com/instantbox/instantbox/master/init.sh) 下面是我的完整安装过程 mkdir /opt/instantbox cd /opt/instantbox 1.脚本文件 (这个没…

C++ 之LeetCode刷题记录(二十二)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅。 目标&#xff1a;执行用时击败90%以上使用 C 的用户。 112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该…

当一位大学生开始了他的博客生涯......

机缘 最开始也是因为看到网上说&#xff0c;写博客是一个好习惯&#xff0c;可以用来复习&#xff0c;随着自己学习也发现&#xff0c;很多东西学了就忘&#xff0c;然后有时候去晚上找资料就非常麻烦&#xff0c;虽然有一些基本的知识&#xff0c;在学习的时候会放在便签里&a…

RocketMq5源码搭建

最近公司使用到了RocketMQ,所以打算研究一下RocketMQ 准备自己动手搭建一下RocketMq源码 前提 需要搭建jdk环境&#xff0c;jdk版本需要高于1.8 首先 从github 拉源码 源码地址&#xff1a;rocketMq源码传送门 启动namesrv 启动之前需要配置一下ROCKERMQ_HOME 配置如下&a…

C语言——指针进阶(四)

目录 一.前言 二.指针和数组笔试题解析 2.1 二维数组 2.2 指针笔试题 三.全部代码 四.结语 一.前言 本文我们将迎来指针的结尾&#xff0c;包含了二维数组与指针的试题解析。码字不易&#xff0c;希望大家多多支持我呀&#xff01;&#xff08;三连&#xff0b;关注&…

详解appium怎样连接多台设备

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 我们在做app自动化的时候&#xff0c;若要考虑兼容性问题&#xff0c;需要跑几台设备&#xff0c…

2023年算法GWCA -CNN-BiLSTM-ATTENTION回归预测(matlab)

2023年算法GWCA -CNN-BiLSTM-ATTENTION回归预测&#xff08;matlab&#xff09; GWCA -CNN-BiLSTM-Attention长城建造算法优化卷积-长短期记忆神经网络结合注意力机制的数据回归预测 Matlab语言。 长城建造算法&#xff08;Great Wall Construction Algorithm&#xff0c;GWC…

Java基础—面向对象OOP—18三大特性:封装、继承与多态

由于本身理解还不是很到位&#xff0c;所以写的很绕&#xff0c;后续待补充优化 1、封装&#xff08;底层&#xff09;&#xff1a;该露的露&#xff0c;该藏的藏 高内聚&#xff1a;类的内部数据操作细节自己完成&#xff0c;不允许外部干涉低耦合&#xff1a;仅暴露少量的方…

JavaScript DOM属性和方法之element元素对象

在HTML DOM中&#xff0c;elment对象表示HTML与纳素&#xff0c;可以包含的节点类型有元素u节点、文本节点、注释节点。它们有响应的属性和方法&#xff0c;有很多都是我们之前用过的。 一、element对象属性 1、attributes 该属性返回标签元素的所有属性集合&#xff0c;也就…

Hotspot源码解析-第27章-开始执行Java代码

第27章-开始执行Java代码 截止第26章完成了 创建Java虚拟的整个过程&#xff08;Threads::create_vm()&#xff09;&#xff0c;在第5章时&#xff0c;有对后续流程的一个简单介绍&#xff0c;从这一章开始&#xff0c;要对后续流程做细节介绍&#xff0c;那就接着第5章继续讲…

dvwa,xss反射型lowmedium

xss&#xff0c;反射型&#xff0c;low&&medium low发现xss本地搭建实操 medium作为初学者的我第一次接触比较浅的绕过思路 low 发现xss 本关无过滤 <script>alert(/xss/)</script> //或 <script>confirm(/xss/)</script> //或 <script&…