文档章节

二分查找法(循环和递归的两种实现方法)

十一11
 十一11
发布于 2016/04/07 20:33
字数 141
阅读 98
收藏 8
package sort;
public class BinaryFind {
	static int[] a = { 1, 2, 4, 6, 8, 9, 10, 40 };
	public static void main(String[] args) {
		System.out.println(binaryFind(3));
		System.out.println(binaryFindRec(3, 0, a.length - 1));
	}
	public static int binaryFind(int key) {
		int lowerBound = 0;
		int upperBound = a.length - 1;
		int current;
		while (true) {
			current = (lowerBound + upperBound) / 2;
			if (a[current] == key) {
				return current;
			} else if (lowerBound > upperBound) {
				return -1;
			} else {
				if (a[current] > key) {
					upperBound = current - 1;
				} else {
					lowerBound = current + 1;
				}
			}
		}
	}
	public static int binaryFindRec(int key, int lowerBound, int upperBound) {
		int current;
		while (true) {
			current = (lowerBound + upperBound) / 2;
			if (a[current] == key) {
				return current;
			} else if (lowerBound > upperBound) {
				return -1;
			} else {
				if (key < a[current]) {
					return binaryFindRec(key, lowerBound, current - 1);
				} else {
					return binaryFindRec(key, current + 1, upperBound);
				}
			}
		}
	}
}


© 著作权归作者所有

十一11
粉丝 6
博文 80
码字总数 19784
作品 0
杭州
私信 提问
Java算法之 二分搜寻法 ( 搜寻原则的代表)

二分搜寻法 ( 搜寻原则的代表) 1.二分查找又称折半查找,它是一种效率较高的查找方法。 2.二分查找要求:(1)必须采用顺序存储结构 (2).必须按关键字大小有序排列 3.原理:将数组分为三...

郑加威
2017/04/18
14
0
递归 —— 二分查找法 —— 归并排序

PS:什么是递归、二分查找、归并排序。 递归排序大家都不陌生,递归简单的说就是自己在没有达到目的的同时在此调用本身,把一个大问题层层转化为和原问题相似的小问题解决,递归需要有边界条...

CMusketeer
2018/07/29
0
0
数据结构之冒泡排序,递归,二分法

一丶冒泡排序:   1.概念:     顾名思义,冒泡排序方式就跟气泡一样,一层一层的往上冒,气泡越大数值越小,当遇到比自己小的气泡,就升到此气泡上面,逐渐比较.   2.算法原理:     冒泡...

七寸丶
2018/08/15
0
0
算法与数据结构(五)二叉搜索树

二叉搜索树 (Binary Search Tree) 核心是解决问题。高效解决问题。 查找问题 Searching Problem: 查找问题是计算机中非常重要的基础问题 查找问题的基础:二分查找法 Binary Search 对于有序...

天涯明月笙
2017/09/16
0
0
算法之搜索(Java版)-持续更新补充

一、顺序查找 顺序查找对序列本身没有要求(比如不需要是已经排序好的),也不仅限于数字、字符,也可以用于前缀,对象信息的关键信息的匹配(比如查找指定id的相应信息)。 衡量查找性能的一...

kissjz
2018/08/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
56分钟前
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
今天
8
0
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和...

OBKoro1
今天
7
0
轻量级 HTTP(s) 代理 TinyProxy

CentOS 下安装 TinyProxy yum install -y tinyproxy 启动、停止、重启 # 启动service tinyproxy start# 停止service tinyproxy stop# 重启service tinyproxy restart 相关配置 默认...

Anoyi
今天
2
0
Linux创建yum仓库

第一步、搞定自己的光盘 #创建文件夹 mkdir -p /media/cdrom #挂载光盘 mount /dev/cdrom /media/cdrom #编辑配置文件使其永久生效 vim /etc/fstab 第二步,编辑yun源 vim /ect yum.repos.d...

究极小怪兽zzz
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部