经典算法之二分查找法(俗称二分搜索法)

文章目录

  • 经典算法之二分查找法(俗称二分搜索法)
  • 前言
  • 一、什么是二分查找法?
  • 二、代码实现
  • 总结

前言

就算法而言,我们主要学习的是数学+思维+逻辑+数据结构实现功能,所以我们主要学习是思维也是解决问题的思路,然后用逻辑去实现它。


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是二分查找法?

在有顺序的数组中,每次取出查找范围内的中间数进行比较,如果大于中间数,则说明要找的数在后面,否则在前面。依次调整开始范围和结束范围即可。

二、代码实现

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,下面经将介绍,左边界二分查找法、右边界二分查找法。

经典算法之二分查找法(俗称基本二分搜索法)相关推荐

  1. 经典算法之左边界二分查找法(俗称左边界二分搜索法)

    经典算法之左边界二分查找法(俗称左边界二分搜索法) 文章目录 经典算法之左边界二分查找法(俗称左边界二分搜索法) 前言 一.什么左边界二分查找法? 二.代码实现 总结 前言 就算法而言,我们主要学习的 ...

  2. 经典算法之右边界二分查找法(俗称基本右边界二分搜索法)

    经典算法之右边界二分查找法(俗称基本右边界二分搜索法) 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 经典算法之右边界二分查找法(俗称基本右边界二分搜索法) 前言 一.什 ...

  3. 经典算法之折半查找法

    活动地址:21天学习挑战赛 目录 一. 算法 概述 算法过程 二.代码实践 三.复杂度分析 时间复杂度 空间复杂度 四.优缺点分析 优点 缺点 一. 算法 概述 折半查找( Binary Search ...

  4. 经典算法之顺序查找法

    活动地址:CSDN21天学习挑战赛 前言 已经进入八月份了,暑假也正式进入倒计时.本人前段时间在学习前端中移动端部分的微信小程序开发知识,也算勉勉强强能入门(因为没有前端三件套的基础,前端居然是从小程 ...

  5. 经典算法之折半插入排序法

    活动地址:21天学习挑战赛 文章目录 一.算法 1.算法概述 2.算法步骤 二.算法实践 1.Java代码 2.执行结果 三.复杂度分析 1.时间复杂度 2.空间复杂度 一.算法 1.算法概述 直接插 ...

  6. 二分查找法的基本思想与实现代码

    二分查找法思想: 二分查找法又称夹逼法,二分查找法使用的基本条件是一个有序的数组,通过从数组头部和尾部折半,判断要查找的数和mid位置数值的大小,来判断要查找的数实在那一半,之后继续折半查找,直至找到 ...

  7. 【经典排序算法】二分查找法 (动图演示 + C 语言代码实现)

    [经典排序算法]二分查找法 (动图演示 + C 语言代码实现)   

  8. NTC测温中 经典温度查表算法--二分查找法

    说明: 二分查找法的优点:查找速度快 1024个长度的表最长只需10次查表就能得出结果 在用NTC测试温度的方案中,NTC的温度表的长度一般是100-200 有些达到400-500的长度 在这种情况下 ...

  9. javascript数据结构与算法---检索算法(二分查找法、计算重复次数)

    javascript数据结构与算法---检索算法(二分查找法.计算重复次数) /*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/ function qSort(arr){if (a ...

最新文章

  1. jwt 私钥_JSON Web Token (JWT)生成Token及解密实战。
  2. qtextbrowser 大量数据卡顿_800万行的数据,Excel 10秒钟就能完成统计?这个工具太良心了!...
  3. python使用os.listdir和os.walk获得文件的路径
  4. [转]AIX平台下如何增加用户和组的名称长度
  5. sybase不支持的条件表达式_包教包会!7段代码带你玩转Python条件语句(附代码)...
  6. 电脑html游戏,电脑网页游戏排行榜
  7. 工作时间管理之番茄工作法
  8. libcef-框架架构中概念介绍-命令行参数-元素布局-应用程序结构(二)
  9. 150行Python代码模拟太阳系行星运转(含music)
  10. 太强!拿下腾讯公司技术突破奖,腾讯云 RTC 实时音视频技术到底了有多牛?...
  11. 雷达通信术语中英文对照
  12. 流放者柯南自建服务器 linux,流放者柯南自建服务器教程一览服务器搭建方法介绍...
  13. 双非本23秋招之路-从考研跑路到某安全大厂(无实习、项目)
  14. oracle 不释放内存,内存不释放?解决方法
  15. 分享 | OHBM2020所有poster的信息
  16. 树莓派 Pico RP2040 MicroPython 编程 - 软件安装及设置
  17. 2018.12.06 课后习题作业
  18. 一个简单的LED程序
  19. UEFI secure boot(3)- 安全引导的实现
  20. 微信小程序跨页面通信

热门文章

  1. jquery模拟九宫格抽检
  2. MySQL获取当前日期、时间、时间戳函数
  3. TVM:成为深度学习领域的“Linux”
  4. 十条虚拟地址空间核心知识
  5. 临洮二中高考2021成绩查询,凝心聚力备高考 策马扬鞭励精神 ——临洮二中2021届高三誓师大会...
  6. ajax请求被SpringMVC拦截器拦截后如何进行页面跳转
  7. caj粘贴到word中会出现很多换行
  8. ios_swift开发资源整理
  9. 普通 Android App 适配全面屏
  10. SwiftUI 官方教程 (九)