
【数算-29】【十大常用算法-01】非递归二分查找
发布日期:2021-05-07 08:58:07
浏览次数:19
分类:精选文章
本文共 1462 字,大约阅读时间需要 4 分钟。
文章目录
1、递归式二分查找
public class BinarySearch { /** * @param arr 待查找数组 * @param left 左侧索引 * @param right 右侧索引 * @param target 待查找目标值 * @Method binarySearch * @Author zhihua.Li * @Version 1.0 * @Description 针对要查找的值在待查找数组中只有一个 * @Return int * @Exception * @Date 2021/2/7 8:16 */ private int binarySearch(int[] arr, int left, int right, int target) { if (left > right) { return -1; } int mid = (left + right) / 2; int midValue = arr[mid]; if (midValue < target) { return binarySearch(arr, mid + 1, right, target); } else if (midValue > target) { return binarySearch(arr, left, mid - 1, target); } else { return mid; } } }
2、非递归式二分查找
1、算法介绍
2、代码实现
// 二分查找的非递归实现法 private int binarySearch(int[] arr, int target) { int left = 0; int right = arr.length - 1; int mid; while (left <= right) { mid = (left + right) / 2; if (arr[mid] == target) { return mid; } else if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return -1; }
3、代码测试
@Test public void test() { int[] arr = { 1, 4, 8, 13, 14, 20, 100}; int i = binarySearch(arr, 14); System.out.println("index = " + i); }
运行结果为:

发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年03月20日 11时29分24秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
阅站无数!不过我只推荐下面这些
2021-05-09
值类型与引用类型(中)
2021-05-09
MSSQL 2005 数据库变成可疑状态
2021-05-09
QBlog V2.5 源码开放下载(ASP.NET 番外系列之开端)
2021-05-09
秋色园引发CPU百分百命案的事件分析与总结
2021-05-09
安装jdk并配置环境变量
2021-05-09
稀疏数组
2021-05-09
js的严格模式
2021-05-09
ETL工具-KETTLE教程实例实战1----术语和定义
2021-05-09
idea的安装和无限期试用
2021-05-09
Oracle VM VirtualBox安装PVE虚拟机
2021-05-09
【转】如何用css限制文字长度,使溢出的内容用省略号…显示
2021-05-09
Android MediaPlayer setDataSource failed
2021-05-09
ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路
2021-05-09
【nodejs原理&源码杂记(8)】Timer模块与基于二叉堆的定时器
2021-05-09
如何查看jsplumb.js的API文档(YUIdoc的基本使用)
2021-05-09
大前端的自动化工厂(1)——Yeoman
2021-05-09
数据仓库建模方法论
2021-05-09
数据仓库之拉链表
2021-05-09