java实现二分查找(迭代与递归)
来源:互联网 发布:淘宝切片详情页上传 编辑:程序博客网 时间:2024/04/30 01:06
二分查找是比较常用也是很高效的一种查找算法,其要求查找数据集的有序,采用顺序存储。在这里使用数组来简单的模拟数据集,并且要求数组升序元素排列,仅仅作为示例使用。如有错误欢迎批评指正。
public class BinarySearch {/** * 二分查找迭代版本 * * @param src原数组从小到大排列 * @param target查找的目标元素位置 * @return当目标元素在数组中不存在的时候返回-1 */public static int binarySearch(int[] src, int target) {int result = -1;int start = 0;int end = src.length - 1;while (end >= start) {int half = (end + start) / 2;if (target == src[half]) {result = half;break;} else if (target < src[half]) {end = half - 1;} else {start = half + 1;}}return result;}/** * 二分查找的递归版本 * * @param src原数组从小到大排列 * @param target查找的目标元素位置 * @return当目标元素在数组中不存在的时候返回-1 */public static int binarySearch(int[] src, int target, int start, int end) {int result = -1;if (end < start) {return result;}int half = (start + end) / 2;if (target == src[half]) {result = half;} else if (target < src[half]) {result = binarySearch(src, target, start, half - 1);} else {result = binarySearch(src, target, half + 1, end);}return result;}public static void main(String[] args) {int[] src = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int pos = binarySearch(src, 6, 0, src.length - 1);if (pos != -1) {System.out.println("找到目标点在" + pos + "位置,值为" + src[pos]);} else {System.out.println("没有找到目标点");}}}
0 0
- java实现二分查找(迭代与递归)
- 二分查找的递归与迭代实现
- java实现二分查找(迭代)
- 二分查找(迭代和递归)
- 二分查找的递归实现和迭代实现
- 迭代和递归分别实现二分查找
- 二分查找递归,迭代写法
- 二分查找(递归和普通迭代)
- java递归实现二分查找
- 折半查找的迭代与递归实现
- PHP实现二分查找(递归与非递归)
- 二分查找(递归与非递归实现)
- 二分查找算法(递归与非递归实现)
- PHP实现二分查找(递归与非递归)
- 二分查找递归与非递归实现
- 二分查找,递归与非递归实现
- 二分查找非递归与递归实现
- 二分查找递归与非递归实现
- VS2013 加快编译速度 的方法整理
- Android开发之有效加载大尺寸位图
- Linux:多进程访问同一文件,如何用文件锁进行保护, fcntl()详解
- 《启示录》阅读笔记(十四)——创业型公司的产品管理+大公司如何创新+在大公司施展拳脚
- android studio 单元测试
- java实现二分查找(迭代与递归)
- java之pdf 2
- 安装PIL时注册表中找不到python2.7
- Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Wi
- psexec使用的简易教程
- git进阶--分支
- AngularJs页面传参的几种方式
- Android 自定义组件 方法篇
- 深入理解Deep C Second