Java编程:二分查找算法(非递归)
二分查找算法(非递归)介绍
- 前面我们讲过了二分查找算法,是使用递归的方式,下面我们讲解二分查找算法的非递归方式
- 二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找
- 二分查找法的运行时间为对数时间O(㏒₂n) ,即查找到需要的目标位置最多只需要㏒₂n步,假设从[0,99]的队列(100个数,即n=100)中寻到目标数30,则需要查找步数为㏒₂100 , 即最多需要查找7次( 2^6 < 100 < 2^7)
二分查找算法(非递归)代码实现
- 数组 {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.二分查找算法(非递归)介绍 前面我们讲过了二分查找算法,是使用递归的方式,下面我们讲解二分查找算法的非递归方式 二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找 ...
- 【Java数据结构与算法】第十七章 二分查找(非递归)和分治算法(汉诺塔)
第十七章 二分查找(非递归)和分治算法(汉诺塔) 文章目录 第十七章 二分查找(非递归)和分治算法(汉诺塔) 一.二分查找 1.思路 2.代码实现 二.分治算法(汉诺塔) 1.概述 2.汉诺塔 一.二 ...
- python递归实现二分查找_python二分查找算法的递归实现方法
本文实例讲述了python二分查找算法的递归实现方法.分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码: def binarySearch(alist, item): first = 0 ...
- python递归实现二分查找_python二分查找算法的递归实现
本文实例讲述了python二分查找算法的递归实现方法.分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码: def binarySearch(alist, item): first = 0 ...
- 二分查找算法(递归与非递归两种方式)
首先说说二分查找法. 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回1,失败返回对应的数组下标. 采用非递归方式完成二分查找法.java代码如下 ...
- 二分查找算法(递归+非递归)
二分算法步骤描述 前提:有序数组中查找关键词所在的位置 ① 首先确定整个查找区间的中间位置 mid = strat+(end-strat)/2 ② 用待查关键字key值与中间位置的关键字值进行比较: ...
- 二分查找算法(递归方式)
文章目录 基本思想 代码示例 复杂度分析 尾注 基本思想 二分查找算法,也叫折半搜索算法,一般来讲,二分查找算法常用于一个有序数组(也可以用于无序数组,下一节讲解).在搜索时,首先选择一个中点,如果中 ...
- 二十一、二分查找算法(递归非递归)
一.二分查找思路分析 1.首先确定该数组中间的下标 ,即mid=(left+high)/2; 2.然后让需要查找的value值与array[mid]值进行比较 2.1)findVal > arr ...
- 二分查找原理非递归与递归实现【转载】
二分查找 实现查找指定数值在元素有序的数组中存储的位置(索引),返回该位置(索引). 解题步骤: 定义3个用来记录索引值的变量,变量min记录当前范围最小索引值,初始值为0:变量max记录当前范围最大 ...
- 二分查找算法的递归、循环实现及其缺陷
关于二分查找法 在学习算法的过程中,我们除了要了解某个算法的基本原理.实现方式,更重要的一个环节是分析算法的复杂度.在时间复杂度和空间复杂度之间,我们又会更注重时间复杂度,往往用牺牲空间换时间的方法提 ...
最新文章
- ECHO.js 纯javascript轻量级延迟加载
- 谷歌SEO和百度SEO的区别
- 数据挖掘竞赛-轴承故障检测训练赛
- RabbitMQ管理(2)——用户管理
- TensorFlow(六)with语句
- 虚拟化之vmware-vsphere (web) client
- AndroidStudio快捷键大全
- vue 给取data值_一些Vue相关的面试题,帮助求职者提升竞争力
- jquery 获取整个表单_15个表单验证jQuery插件和库
- 动态 Echarts 温湿度示意图 背景可以随温度变化
- LMS自适应滤波的MATLAB实现——实例仿真
- 即时通讯(IM)开源项目OpenIM本周版本发布-v1.0.6
- html5页面风格,H5页面的设计风格有哪些?
- debian9修改只读文件内容
- 一、基于workflow-core强势开发审批流【已成功流转50W笔单据】
- 用Python爬取股票数据,绘制K线和均线并用机器学习预测股价(来自我出的书)
- 数据分享|R语言关联规则挖掘apriori算法挖掘评估汽车性能数据
- 张忠谋认为美国巨资补贴难补落后,先进工艺不是用钱能搞定的
- 细胞生物学 Chapter12:绪论
- icassp 2021 语音合成文章总结