1 假设有一个数组[1, 3, 5, 6, 23, 300],要从中找到23

2 有多种方法完成这个任务

(1)我们可以从小到大按顺序一个一个的对比,直到找到目标数字,或者反过来

(2)从中间开始查找,判断大小,如果要查找的数大于中间的数,接着取后一半查找,如果要查找的数小于中间的数,就去前一半查找,一次类推,也就是二分法查找

3 使用二分法查找的目的是减少查找次数,缩短查找时间

4 上代码

public class Demo01 {public static void main(String[] args) {int[] array = {23, 1, 3, 300, 5, 6};Demo01.m1(array, 5);}public static void m1(int[] array, int number) {Arrays.sort(array); // 升序排序int begin = 0; // 数组的第一个索引int end = array.length - 1; // 数组的最后一个索引while (begin <= end) {int middle = (begin + end) / 2;if (number > array[middle]) {begin = middle + 1;} else if (number < array[middle]) {end = middle - 1;} else {System.out.println(number + " 存在,索引为 " + middle);return;}}System.out.println("没有找到 " + number);}}

5 代码讲解

  • 示例数组[1, 3, 5, 6, 23, 300]
  • 数组必须是有序的,一般都是升序排序,使用Arrays类的静态方法sort(),先对无序的数组进行排序
  • 循环查找的条件是begin要小于等于end,如果begin大于end,说明没有找到这个数,结束循环
  • number与中间的索引处的数进行对比,如果number比array[middle]大,就将middle加1,作为新的begin,如果number比array[middle]小,就将middle减1,作为新的end
关于二分法查找就讲到这里,如有纰漏,欢迎指正,感激不尽,谢谢!

java 二分查找_Java二分法查找相关推荐

  1. 带有哨兵的顺序表查找和二分法查找(折半查找)(java)代码+说明

                                         带有哨兵的顺序表查找和二分法查找(折半查找)(java)代码+说明 一:带有哨兵的顺序表查找 1.算法设计:          ...

  2. python实现二分法查找_python3 二分法查找

    ''' 二分法查找 有序列表 掐头去尾取中间 查找列表中xx在不在列表中,在,则返回索引值 ''' # lst = [1, 4, 6, 8, 9, 21, 23, 26, 35, 48, 49, 54 ...

  3. 数据结构与算法笔记(十二)—— 查找算法(顺序查找、二分法查找)

    搜索是在一个项目集合中找到一个特定项目的算法过程.搜索通常的答案是真的或假的,因为该项目是否存在.搜索的几种常见方法:顺序查找.二分法查找.二叉树查找.哈希查找 一.顺序查找 最基本的查找技术,过程: ...

  4. c语言二分法查找次数,二分法查找

    二分法查找 算法:二分法查找适用于数据量较大,但是数据需要先排好序 (1)确定该区间的中间位置k (2)将查找的值T与array[k]进行比较.若相等,查找成功返回此位置:否则确定新的查找区域,继续二 ...

  5. 查找算法(顺序查找、二分法查找、二叉树查找、hash查找)

    查找功能是数据处理的一个基本功能.数据查找并不复杂,但是如何实现数据又快又好地查找呢?前人在实践中积累的一些方法,值得我们好好学些一下.我们假定查找的数据唯一存在,数组中没有重复的数据存在. (1)顺 ...

  6. python实现二分法查找_python二分法查找

    下面是一段用Python实现的二分法查找代码#encoding=utf-8 import sys def search2(a,m): low = 0 high = len(a) - 1 while l ...

  7. java list 最小值_Java 实例 – 查找 List 中的最大最小值

    Java 实例 - 查找 List 中的最大最小值 以下实例演示了如何使用 Collections 类的 max() 和 min() 方法来获取List中最大最小值: /* author by w3c ...

  8. java+标签定位_java+selenium——查找定位元素,elements复数定位(driver.findElementsByClassName(mnav);)002...

    elements复数定位: 在上面的例举的八中基本定位方式种,都有对应的复数形式,分别是下面这些: id复数定位find_elements_by_id() name复数定位find_elements_ ...

  9. java排序 二分法_JAVA二分法排序

    二分法查找 1.二分法查找是建立在已经排序的基础之上的. 2.以下程序分析从小到大排序. 3.这个数组中没有重复的元素. 1 3 5 9 11 13 56 以上是一个已经排好序的int类型的数组,要求 ...

最新文章

  1. CMS 被废弃了,该怎么办呢?
  2. c语言黑白棋运行结果,黑白棋c语言代码
  3. python 导入模块中的命令并且将命令更名
  4. 【IOS 开发】Objective - C 语法 之 流程控制
  5. AVL树平衡旋转详解
  6. SAP ABAP关键字在Chrome浏览器里高亮显示的实现原理 - How is ABAP keyword highlight implemented in Chrome
  7. Android P 网络报错 : java.io.IOException: Cleartext HTTP traffic to ***.com not permitted
  8. C语言数组查找(线性查找 折半查找)
  9. 实现线程安全的单例模式的四种方式
  10. hpux11.31 环境下如何查看磁盘的WWID( scsimgr lun_map)
  11. Swift与Objective-C混编时,我们是如何将编译时间优化了35%?
  12. cocos2d-x-3.x 配置(1)win环境搭建
  13. 如何处理杀不掉的病毒
  14. C语言实现调用python绘图
  15. js 实现选择文件存放路径
  16. Fluent Meshing的workflow方法
  17. django国际化与本地化
  18. linux命名空间(namespace)学习(一)
  19. 计算机中央控制单元是由什么组成,电子控制单元由什么组成
  20. 一个屌丝程序员的青春(三三)

热门文章

  1. 开发安全的ASP.NET应用程序
  2. OpenDocument Format ODF
  3. OpenJDK 14 与 OpenJDK 8 及多个主要版本的性能基准测试对比
  4. 10 个优秀的JavaScript开发框架
  5. NLP --- 文本分类(基于概率的隐语意分析(PLSA)详解)
  6. python idle连接失败_不能通过IDLE从Explorer运行Python [2013] - IDLE的子进程没有连接...
  7. java 重量单位换算_用java创建一个可以换算长度单位的length类,将某种长度单位进行数值间的转换。...
  8. Day2-运算符和编码
  9. IntelliJ IDEA 背景色以及字体设置
  10. Django安装与开发虚拟环境搭建01