经典算法之二分查找法(俗称基本二分搜索法)
经典算法之二分查找法(俗称二分搜索法)
文章目录
- 经典算法之二分查找法(俗称二分搜索法)
- 前言
- 一、什么是二分查找法?
- 二、代码实现
- 总结
前言
就算法而言,我们主要学习的是数学+思维+逻辑+数据结构实现功能,所以我们主要学习是思维也是解决问题的思路,然后用逻辑去实现它。
提示:以下是本篇文章正文内容,下面案例可供参考
一、什么是二分查找法?
在有顺序的数组中,每次取出查找范围内的中间数进行比较,如果大于中间数,则说明要找的数在后面,否则在前面。依次调整开始范围和结束范围即可。
二、代码实现
package com.zrrd.lianxi;public class 二分查找法 {public static void main(String[] args) {int a[]={1,2,3,4,5,6,7,8,9,10};//意思是说我要数组中 9 的位置int i = erFenFaQuery(a,9);System.out.println("返回的索引位为"+i);}public static int erFenFaQuery(int[] shuzu,int cs) {//定义查询范围起始下角标int start = 0;//定义查询范围截止下角标int end = shuzu.length-1;//判断截止位要高于起始位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){//返回下角标return laf;}//判断当前数组值 是否 小于查询的参数if (shuzu[laf] < cs){//小于则下角标+1start = laf + 1;//判断当前数组值 是否 大于查询的参数}else if (shuzu[laf] > cs) {//大于则下角标-1end = laf - 1;}}return -(start + 1);}
}
效果截图:
结构图:
总结
具体的实现方式我在代码中注释已说明,这个场景是最简单的,可能也是大家最熟悉的,即搜索一个数,如果存在,返回其索引,否则返回 -1,下面经将介绍,左边界二分查找法、右边界二分查找法。
经典算法之二分查找法(俗称基本二分搜索法)相关推荐
- 经典算法之左边界二分查找法(俗称左边界二分搜索法)
经典算法之左边界二分查找法(俗称左边界二分搜索法) 文章目录 经典算法之左边界二分查找法(俗称左边界二分搜索法) 前言 一.什么左边界二分查找法? 二.代码实现 总结 前言 就算法而言,我们主要学习的 ...
- 经典算法之右边界二分查找法(俗称基本右边界二分搜索法)
经典算法之右边界二分查找法(俗称基本右边界二分搜索法) 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 经典算法之右边界二分查找法(俗称基本右边界二分搜索法) 前言 一.什 ...
- 经典算法之折半查找法
活动地址:21天学习挑战赛 目录 一. 算法 概述 算法过程 二.代码实践 三.复杂度分析 时间复杂度 空间复杂度 四.优缺点分析 优点 缺点 一. 算法 概述 折半查找( Binary Search ...
- 经典算法之顺序查找法
活动地址:CSDN21天学习挑战赛 前言 已经进入八月份了,暑假也正式进入倒计时.本人前段时间在学习前端中移动端部分的微信小程序开发知识,也算勉勉强强能入门(因为没有前端三件套的基础,前端居然是从小程 ...
- 经典算法之折半插入排序法
活动地址:21天学习挑战赛 文章目录 一.算法 1.算法概述 2.算法步骤 二.算法实践 1.Java代码 2.执行结果 三.复杂度分析 1.时间复杂度 2.空间复杂度 一.算法 1.算法概述 直接插 ...
- 二分查找法的基本思想与实现代码
二分查找法思想: 二分查找法又称夹逼法,二分查找法使用的基本条件是一个有序的数组,通过从数组头部和尾部折半,判断要查找的数和mid位置数值的大小,来判断要查找的数实在那一半,之后继续折半查找,直至找到 ...
- 【经典排序算法】二分查找法 (动图演示 + C 语言代码实现)
[经典排序算法]二分查找法 (动图演示 + C 语言代码实现)
- NTC测温中 经典温度查表算法--二分查找法
说明: 二分查找法的优点:查找速度快 1024个长度的表最长只需10次查表就能得出结果 在用NTC测试温度的方案中,NTC的温度表的长度一般是100-200 有些达到400-500的长度 在这种情况下 ...
- javascript数据结构与算法---检索算法(二分查找法、计算重复次数)
javascript数据结构与算法---检索算法(二分查找法.计算重复次数) /*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/ function qSort(arr){if (a ...
最新文章
- jwt 私钥_JSON Web Token (JWT)生成Token及解密实战。
- qtextbrowser 大量数据卡顿_800万行的数据,Excel 10秒钟就能完成统计?这个工具太良心了!...
- python使用os.listdir和os.walk获得文件的路径
- [转]AIX平台下如何增加用户和组的名称长度
- sybase不支持的条件表达式_包教包会!7段代码带你玩转Python条件语句(附代码)...
- 电脑html游戏,电脑网页游戏排行榜
- 工作时间管理之番茄工作法
- libcef-框架架构中概念介绍-命令行参数-元素布局-应用程序结构(二)
- 150行Python代码模拟太阳系行星运转(含music)
- 太强!拿下腾讯公司技术突破奖,腾讯云 RTC 实时音视频技术到底了有多牛?...
- 雷达通信术语中英文对照
- 流放者柯南自建服务器 linux,流放者柯南自建服务器教程一览服务器搭建方法介绍...
- 双非本23秋招之路-从考研跑路到某安全大厂(无实习、项目)
- oracle 不释放内存,内存不释放?解决方法
- 分享 | OHBM2020所有poster的信息
- 树莓派 Pico RP2040 MicroPython 编程 - 软件安装及设置
- 2018.12.06 课后习题作业
- 一个简单的LED程序
- UEFI secure boot(3)- 安全引导的实现
- 微信小程序跨页面通信