经典算法之右边界二分查找法(俗称基本右边界二分搜索法)
经典算法之右边界二分查找法(俗称基本右边界二分搜索法)
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 经典算法之右边界二分查找法(俗称基本右边界二分搜索法)
- 前言
- 一、什么是右边界二分查找法?
- 二、代码实现
- 总结
前言
就算法而言,我们主要学习的是数学+思维+逻辑+数据结构实现功能,所以我们主要学习是思维也是解决问题的思路,然后用逻辑去实现它。
提示:以下是本篇文章正文内容,下面案例可供参考
一、什么是右边界二分查找法?
寻找右侧边界和寻找左侧边界的代码差不多,不痛点在与当起始位+截止位的和右移之后数组下角标对应的数组值等于要查询额参数值要+1,起始位>截止位要 -1(左边法参考我的算法左边界搜索法文章)。
二、代码实现
package com.zrrd.lianxi;public class 二分查找法 {public static void main(String[] args) {int a[]={1,2,3,4,5,6,7,8,9,10};int i2 = rightErFenFaQuery(a,5);System.out.println("返回的索引位为"+i2);}/*** 寻找右侧边界的二分查找*/public static int rightErFenFaQuery(int[] shuzu, int cs) {//校验数组大小if (shuzu.length == 0)return -1;//定义查询范围起始下角标int start = 0;//定义查询范围截止下角标int end = shuzu.length;while (start < end) {/**将查询范围起始位+截止位之和 无符号右移 1 位* >>> 运算符详解:无符号右移:低位抛弃,高位补0.* 以上举例:0 + 2 = 2 2 >>> 1* 数字2的二进制吗 0000 0010* 右移之后的二进制码 0000 0001 (是数字1)**/int laf = (start + end) >>> 1;if (shuzu[laf] == cs) {start = laf + 1;//判断当前数组值 是否 小于查询的参数} else if (shuzu[laf] < cs) {//小于则下角标+1start = laf + 1;//判断当前数组值 是否 大于查询的参数} else if (shuzu[laf] > cs) {end = laf;}}//搜索右侧时需要减一return start - 1;}
}
效果截图:
结构图仅供参考:
总结
注意「搜索区间」和 while 的终止条件,如果存在漏掉的元素,记得在最后检查,.如需要搜索左右边界,只要在 shuzu[laf] == cs时做修改即可。搜索右侧时需要减一。
经典算法之右边界二分查找法(俗称基本右边界二分搜索法)相关推荐
- 经典算法之左边界二分查找法(俗称左边界二分搜索法)
经典算法之左边界二分查找法(俗称左边界二分搜索法) 文章目录 经典算法之左边界二分查找法(俗称左边界二分搜索法) 前言 一.什么左边界二分查找法? 二.代码实现 总结 前言 就算法而言,我们主要学习的 ...
- 经典算法之二分查找法(俗称基本二分搜索法)
经典算法之二分查找法(俗称二分搜索法) 文章目录 经典算法之二分查找法(俗称二分搜索法) 前言 一.什么是二分查找法? 二.代码实现 总结 前言 就算法而言,我们主要学习的是数学+思维+逻辑+数据结构 ...
- 二分查找法。Java泛型设计二分查找法。
前言基础: 1.只能针对有序的数组进行查找. 2.时间复杂度为O(logn). 3.使用前可以先排序,然后再查找,广泛应用于当一大组数据需要频繁查找,于是我们先将其进行排序,然后再通过二分查找进行查找 ...
- 算法2(二分查找法)
使用二分查找法的前置条件 必须是一个已经排好序的数组 二分查找定义 从有序列表的候选区data[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半. 示例图 循环版二分查找法 d ...
- 【经典排序算法】二分查找法 (动图演示 + C 语言代码实现)
[经典排序算法]二分查找法 (动图演示 + C 语言代码实现)
- NTC测温中 经典温度查表算法--二分查找法
说明: 二分查找法的优点:查找速度快 1024个长度的表最长只需10次查表就能得出结果 在用NTC测试温度的方案中,NTC的温度表的长度一般是100-200 有些达到400-500的长度 在这种情况下 ...
- Python 关于下标的运用技巧(二分查找法,冒泡、选择、插入、归并、快速排序算法)
二分查找法(折半查找法)的递归实现 二分查找法(折半查找法):用于预排序列表的查找问题, 再次强调,二分查找法要配合排序使用,只有排好序,才能使用二分查找法 而且,待查找列表如果有重复值,只能查找到其 ...
- C语言之二分查找法或折半查找法剖析(经典例题,经典解析)
二分查找法(也叫折半查找法): 什么是二分查找? 具体查找的方式? 两种方法剖析 易错点列举 先举例题: int arr[]={1,2,3,4,5,6,7,8,9,10}; 找出7所在的位置. 分析之 ...
- 折半查找算法[二分查找法]算法的实现和解决整数溢出问题~
算法实现的要求: 折半查找法又称为二分查找法,这种方法对待查找的列表有两个要求: 1:必须采用顺序存储结构 2:必须按关键字大小有序排列 算法思想: 将表中间位置记录的关键字与查找关键字进行比较,如果 ...
最新文章
- PHP版本的Graphviz样例之集群流程图
- 积跬步,聚小流------Bootstrap学习记录(2)
- python的用途实例-python中类方法,实例方法,静态方法的作用和区别
- 【通俗理解】锁存器,触发器,寄存器和缓冲器的区别
- 计算机的桌面图片还原,电脑桌面图标重启后自动复原的解决方法。
- Assign the task HDU - 3974(线段树+dfs建树+单点查询+区间修改)
- CTF中Crypty入门必看(密码类,密码学)
- Python打印A~Z的26个字母,你会怎样打印?
- Kafka万亿级消息实战解决方案干货
- 奇安信代码安全实验室帮助微软修复高危漏洞,获官方致谢
- 重载,重写(覆盖)和隐藏的区别
- ROS主从机通信经验总结
- ATSC数字电视标准 1
- PHP程序判断男女身高体重是否,最新男女标准体重对照表,快来看看你达标了没?...
- discuz全局数组变量 后台各项设置 完整版
- Cloudera Manager 环境搭建
- 通过ping命令获取各大网站的IP地址
- 26岁摩拜高管:“下不了手开除70、80后,公司死了谁负责?”
- python 聚宽 对股票名称或代码进行查询
- Python量化选股入门:资本资产定价模型(CAPM)
热门文章
- “5G+区块链”护航新生儿转诊“生命通道”
- Echart图表在项目中如何使用?(前后端详细技术讲解)
- P2026 求一次函数解析式【题解】
- 揭秘子宫里的动物:小袋鼠仅软糖大小
- Quartz之Trigger
- JQuery 向下展开收起动画( slideDown(),slideUp() )
- Ubuntu 16.04 64位+Qt 5.7.1+opencv 3.2.0 + opencv_contrib 3.2.0
- 浅浅轻吟如花的芬芳,开始散漫着
- 安卓开发板之串口通信,通过modbus Rtu协议控制下位机
- Jetbrains系列软件更新失败Connection Error Failed to prepare an update