二分查找算法(非递归)介绍

  1. 前面我们讲过了二分查找算法,是使用递归的方式,下面我们讲解二分查找算法的非递归方式
  2. 二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找
  3. 二分查找法的运行时间为对数时间O(㏒₂n) ,即查找到需要的目标位置最多只需要㏒₂n步,假设从[0,99]的队列(100个数,即n=100)中寻到目标数30,则需要查找步数为㏒₂100 , 即最多需要查找7次( 2^6 < 100 < 2^7)

二分查找算法(非递归)代码实现

  1. 数组 {1,3, 8, 10, 11, 67, 100}, 编程实现二分查找, 要求使用非递归的方式完成.

代码实现:

package binarysearchnorecursion;public class BinarySearchNoRecur {public static void main(String[] args) {int[] arr = {1, 3, 8, 10, 11, 67, 100};int index = binarySearch(arr, 67);System.out.println("index = " + index);}/*** 二分查找非递归实现** @param arr    待查找数组(升序)* @param target 需要查找的数* @return 找到返回对应下标,找不到返回-1*/public static int binarySearch(int[] arr, int target) {int left = 0, right = arr.length - 1;while (left <= right) {// 说明可以继续查找int mid = (left + right) / 2;if (arr[mid] == target) {return mid;} else if (arr[mid] > target) {right = mid - 1;    // 需要向左边查找} else {left = mid + 1; // 需要向右边查找}}return -1;}
}

递归方法

二分查找非递归

Java编程:二分查找算法(非递归)相关推荐

  1. 二分查找算法(非递归)

    1.二分查找算法(非递归)介绍 前面我们讲过了二分查找算法,是使用递归的方式,下面我们讲解二分查找算法的非递归方式 二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找 ...

  2. 【Java数据结构与算法】第十七章 二分查找(非递归)和分治算法(汉诺塔)

    第十七章 二分查找(非递归)和分治算法(汉诺塔) 文章目录 第十七章 二分查找(非递归)和分治算法(汉诺塔) 一.二分查找 1.思路 2.代码实现 二.分治算法(汉诺塔) 1.概述 2.汉诺塔 一.二 ...

  3. python递归实现二分查找_python二分查找算法的递归实现方法

    本文实例讲述了python二分查找算法的递归实现方法.分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码: def binarySearch(alist, item): first = 0 ...

  4. python递归实现二分查找_python二分查找算法的递归实现

    本文实例讲述了python二分查找算法的递归实现方法.分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码: def binarySearch(alist, item): first = 0 ...

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

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

  6. 二分查找算法(递归+非递归)

    二分算法步骤描述 前提:有序数组中查找关键词所在的位置 ① 首先确定整个查找区间的中间位置 mid = strat+(end-strat)/2 ② 用待查关键字key值与中间位置的关键字值进行比较: ...

  7. 二分查找算法(递归方式)

    文章目录 基本思想 代码示例 复杂度分析 尾注 基本思想 二分查找算法,也叫折半搜索算法,一般来讲,二分查找算法常用于一个有序数组(也可以用于无序数组,下一节讲解).在搜索时,首先选择一个中点,如果中 ...

  8. 二十一、二分查找算法(递归非递归)

    一.二分查找思路分析 1.首先确定该数组中间的下标 ,即mid=(left+high)/2; 2.然后让需要查找的value值与array[mid]值进行比较 2.1)findVal > arr ...

  9. 二分查找原理非递归与递归实现【转载】

    二分查找 实现查找指定数值在元素有序的数组中存储的位置(索引),返回该位置(索引). 解题步骤: 定义3个用来记录索引值的变量,变量min记录当前范围最小索引值,初始值为0:变量max记录当前范围最大 ...

  10. 二分查找算法的递归、循环实现及其缺陷

    关于二分查找法 在学习算法的过程中,我们除了要了解某个算法的基本原理.实现方式,更重要的一个环节是分析算法的复杂度.在时间复杂度和空间复杂度之间,我们又会更注重时间复杂度,往往用牺牲空间换时间的方法提 ...

最新文章

  1. ECHO.js 纯javascript轻量级延迟加载
  2. 谷歌SEO和百度SEO的区别
  3. 数据挖掘竞赛-轴承故障检测训练赛
  4. RabbitMQ管理(2)——用户管理
  5. TensorFlow(六)with语句
  6. 虚拟化之vmware-vsphere (web) client
  7. AndroidStudio快捷键大全
  8. vue 给取data值_一些Vue相关的面试题,帮助求职者提升竞争力
  9. jquery 获取整个表单_15个表单验证jQuery插件和库
  10. 动态 Echarts 温湿度示意图 背景可以随温度变化
  11. LMS自适应滤波的MATLAB实现——实例仿真
  12. 即时通讯(IM)开源项目OpenIM本周版本发布-v1.0.6
  13. html5页面风格,H5页面的设计风格有哪些?
  14. debian9修改只读文件内容
  15. 一、基于workflow-core强势开发审批流【已成功流转50W笔单据】
  16. 用Python爬取股票数据,绘制K线和均线并用机器学习预测股价(来自我出的书)
  17. 数据分享|R语言关联规则挖掘apriori算法挖掘评估汽车性能数据
  18. 张忠谋认为美国巨资补贴难补落后,先进工艺不是用钱能搞定的
  19. 细胞生物学 Chapter12:绪论
  20. icassp 2021 语音合成文章总结

热门文章

  1. 9.GitLab 汉化
  2. 6.go import
  3. 8.Nginx 例子
  4. 30. 实体和编码(2)
  5. 8.XSD 复合元素
  6. html中滚动条属性设置
  7. Android 解决qq分享后返回程序出现的Bug
  8. Converter使用及其原理
  9. Promise实现图片预加载
  10. background的认识(二)