一、二分法查找简介

当数组或者集合中存放的元素数量非常多的时候,想要跟踪具体某个元素的位置或者是否存在,常规方式是循环每一个元素直到找到要查找的元素为止。这样的查找方式效率非常低下,这个时候需要使用二分法来实现,提高查找效率。

百度百科概念:

二、二分法查找的算法思想

假设数组是按升序排序的,对于给定的目标值 aim,从数组的中间位置开始查找:

  • 若查找数据与中间元素值正好相等,则返回中间元素值的索引;
  • 若查找数值比中间值小,则以整个查找范围的前半部分作为新的查找范围;
  • 若查找数值比中间值大,则以整个查找范围的后半部分作为新的查找范围;

查找成功返回索引,失败返回 -1。

三、利用循环的方式实现二分法查找

public 

运行结果演示:

由以上运行结果我们得知,如果要查找的数据在数组中存在,则输出该数据在数组中的索引;如果不存在则输出 -1 ,也就是打印 -1 则该数在数组中不存在,反之则存在。

四、利用递归的方式实现二分法查找

public 

运行结果演示:

总结:

递归相较于循环,代码比较简洁,但是时间和空间消耗比较大,效率低。在实际的学习与工作中,根据情况选择使用。通常我们如果使用循环实现代码只要不是太繁琐都选择循环的方式实现~

知乎视频​www.zhihu.com

希望能够帮到大家,有问题的可以留言讨论哦!

while循环random结合_Java 经典算法:二分法查找(循环和递归两种方式实现)相关推荐

  1. xtragrid 某个值 查找_Java 经典算法:二分法查找(循环和递归两种方式实现)

    一.二分法查找简介 当数组或者集合中存放的元素数量非常多的时候,想要跟踪具体某个元素的位置或者是否存在,常规方式是循环每一个元素直到找到要查找的元素为止.这样的查找方式效率非常低下,这个时候需要使用二 ...

  2. 二分查找算法(递归与非递归两种方式)

    首先说说二分查找法. 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回1,失败返回对应的数组下标. 采用非递归方式完成二分查找法.java代码如下 ...

  3. java木马_Java校验上传图片文件是否含有木马的两种方式

    这两天开发一个app遇到了上传文件的安全问题,在这里记录下来,弥补自己只有鱼的记忆的缺陷,也希望有人能够提供更好的思路去解决文件上传的安全问题. 下面这个类是文件上传的公共方法,ToolUtils判断 ...

  4. java applet怎么运行_Java如何运行Applet?运行Applet的两种方式

    详细内容 applet是一个小型的动态Java程序,那么如何运行Applet?本篇文章就给大家介绍Applet,让大家了解Applet是什么,运行Applet的方法,希望对你们有所帮助. Java a ...

  5. java reds 集群_java项目中配置redis-cluster集群的两种方式

    本文分两部分: (1)jedisCluster (2)Spring-Data-Redis集群配置和RedisTemplate用法 我这里是在本机上搭建的3主3从6个redis实例. 一,jedisCl ...

  6. 经典c语言程序设计算法,C语言程序设计和循环结构相关的经典算法之一.ppt

    C语言程序设计和循环结构相关的经典算法之一 第七讲 循环结构的经典算法之一 程序设计举例 ;教 学目 的 :1.灵活运用循环语句 2.编写一些基本算法程序 教学重点和难点:重点:判断素数,求最大公约数 ...

  7. python循环展示大写字母_python调用大写函数python中字典的循环遍历的两种方式

    开发中经常会用到对于字典.列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式. 注意: python2和python ...

  8. 两种方式(goto语句以及while循环)实现C语言关机小程序

    用C语言写的关机小程序简单易懂,可以拿去整蛊室友同学(每天一个挨打小技巧),下面我就给出两种方式实现这个代码,欢迎大家讨论补充. 1.用goto语句实现: #include <stdio.h&g ...

  9. ML之catboost:基于自定义数据集利用catboost 算法实现回归预测(训练采用CPU和GPU两种方式)

    ML之catboost:基于自定义数据集利用catboost 算法实现回归预测(训练采用CPU和GPU两种方式) 目录 基于自定义数据集利用catboost 算法实现回归预测(训练采用CPU和GPU两 ...

最新文章

  1. python中 getnode用法_node.js 爬虫入门总结
  2. C语言位于30到100之间的一个奇数,《帮你度过C语言新手阶段》系列之三
  3. PHP获取客户端的真实IP
  4. java实现权重随机算法
  5. Java判断平台为32位或64位,载入对应DLL
  6. 2018年秋计算机应用基础本科,广东开放大学远程教育专科2018年秋计算机应用基础Word模块测试...
  7. 如何在ADO中使用数据读取器(DataReader)读取数据
  8. 互联网平台黑产解密(上)
  9. 计算机毕业设计django基于python药房药品管理系统(源码+系统+mysql数据库+Lw文档)
  10. 计算机组成原理试题解析答案,计算机组成原理习题答案解析(蒋本珊)
  11. (Python)计算器的设计与实现
  12. Android应用开发中半透明效果实现方案
  13. mysql substr 中文乱码_substr()乱码
  14. Mac读写NTFS硬盘
  15. 粘贴板管理 android,复制粘贴神器(剪贴板管理)app
  16. 卸载2345套件的本人认为最好的方法
  17. win10蓝牙链接上的标准串行com口无法删除
  18. 前端通过【bitly】Api,将长链接转换短连接
  19. meld的使用 Ubuntu入门之六
  20. java -jar 执行jar包出现 java.lang.NoClassDefFoundError

热门文章

  1. HDU 2588 GCD 【Euler + 暴力技巧】
  2. jsp页面的相关复习
  3. java怎样获取变量的类型
  4. 如果全世界人口压缩到100人
  5. ORCALE SYNONYM SEQUENCE
  6. 51 -算法 -LeetCode 53最大子序和 动态规划
  7. Python稳基修炼之计算机等级考试易错细节题3(含答案)
  8. 网站登录页面php代码,一个简单的网页密码登陆php代码
  9. 向日葵linux 用电脑远程控制与管理,远程控制软件向日葵和teamviewer的区别和使用...
  10. Java计算1除以3结果为0_关于java:Int division:为什么1/3 == 0的结果?