当前位置: 首页 > news >正文

多种二分查找

文章目录

  • 二分查找
    • 常规实现
    • 改动版
    • 平衡版
    • 有重复元素时查找与目标相等的最靠左的索引
    • 找到最右边的元素

二分查找

常规实现

public static int binarySearch(int[]a,int target)
{int i=0,j=a.length-1;while(i<=j){int m=i+((j-i)>>>1);if(target<a[m]){j=m+1;}else if(a[m]<target){i=m-1;}if(target==a[m]){return m;}}return -1;
}

在这里插入图片描述

此时i和j所对应的元素都要参与比较运算,故循环条件为i<=j

改动版

public static int binarySearch(int[]a,int target)
{int i=0,j=a.length;while(i<j){int m=i+((j-i)>>>1);if(target<a[m]){j=m;}else if(a[m]<target){i=m-1;}if(target==a[m]){return m;}}return -1;
}

在这里插入图片描述
**此时j表示边界,j指向的并不是查找目标,故循环条件为i<j,且j=m

平衡版

改进之前二分查找左边和右边所用时间不一样的情况
特点:左闭右开的区间,i指向的可能是目标,而j指向的不是目标
不在循环内找出,等循环范围只剩i时,在循环外面比较a[i]与target

public static int binarySearch(int[]a,int target)
{int i=0,j=a.length;while(1<j-i){int m=i+((j-i)>>>1);if(target<a[m]){j=m;}else{i=m;}}if(target==a[i]){return i;}return -1;
}

java中直接用Arrays类下的binarySearch方法进行查找,如果找到了返回目标的索引,没找到返回-(插入位置索引+1)

有重复元素时查找与目标相等的最靠左的索引

public static int binarySearch(int[]a,int target)
{int i=0,j=a.length-1;while(i<=j){int m=i+((j-i)>>>1);if(target<=a[m]){j=m-1;}else{i=m+1;}}return i;
}

找到最右边的元素

public static int binarySearch(int[]a,int target)
{int i=0,j=a.length-1;while(i<=j){int m=i+((j-i)>>>1);if(target<a[m]){j=m-1;}else if(a[m]<=target){i=m+1;}}return i-1;
}
http://www.dtcms.com/a/474881.html

相关文章:

  • 比较好的免费外贸网站东莞皮具网站建设
  • 三好街 做网站丢盖网logo制作免费
  • 储能电池厂追溯升级:电芯卷绕、注液到 Pack 成品的全生命周期数据
  • 茶类网站建设方案四川工程信息网官网
  • 水田智能监控系统
  • 怎么找出网站的备案号阿帕奇网站搭建
  • 网站服务器地址怎么查wordpress 本地 域名绑定
  • 目前网站建设采用什么技术健康咨询类网站模板
  • 普罗米修斯监控实战:从原理到小型项目
  • Ansible-role角色
  • 网站设计 济南中国前500强企业排名
  • 网站开发入门书籍南京网站建设哪家好
  • 解决PyQt5资源模块导入错误:如何修复 ‘No module named ui_sources_rc’ 问题
  • 城市介绍网站模板西充县规划建设局网站
  • 彩票网站开发制作营销类的网站
  • Unity框架YouYouFramework学习第2篇:启动框架
  • wordpress站点赏析检察院网站建设方案
  • wordpress获取时间函数seo在网站制作
  • 计算机视觉(opencv)——基于 MediaPipe 的手势识别系统
  • 免费建网站代码网站登录超时怎么解决
  • 网站开发与管理对应的职业及岗位眉县网站开发
  • 网站建设销售求职东莞建设网住房保障专栏20批公示栏
  • 传统文本特征提取三巨头:TF-IDF、Word2Vec与FastText的深度对比
  • 网站开发怎么拉客户揭阳网站建设价格
  • 网站建设心得.doc网页架构
  • css `scrollbar-width` 渲染一个细滚动条甚至隐藏它,同时保持区域可滚动
  • 西安做网站的价格外贸网站宗旨
  • 晋江外贸网站开发国内精自视频品线一区
  • 网站模版的软件做网站一般注册哪几类商标
  • Golang 项目中使用 Swagger