前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java递归基础案例-二分查找法

Java递归基础案例-二分查找法

作者头像
红目香薰
发布2022-11-29 19:59:48
3230
发布2022-11-29 19:59:48
举报
文章被收录于专栏:CSDNToQQCode

二分查找法,顾名思义,就是一直除以2,找中间部分,例如:1024中的任何一个数都能在10次内准确的猜出来。那么我们查找内容也可以使用二分法快速查找,其实很多时候找bug用的就是这种方法。

代码语言:javascript
复制
package Action;

public class test {
	public static void main(String[] args) {
		int[] arr = { 1, 2, 3, 4, 5, 6 };
		System.out.println(search(arr, 2, 0, arr.length - 1));
		System.out.println(search(arr, 5, 0, arr.length - 1));
	}

	/**
	 * @search 返回被查找的数的位置下标
	 * @param arr   查找的数组
	 * @param n     是要查找的数
	 * @param begin 低位
	 * @param end   高位
	 * @return
	 */
	public static int search(int[] arr, int n, int begin, int end) {
		int mid = (begin + end) / 2;//(开始坐标+结束坐标)/2,找中点
		if (n < arr[begin] || n > arr[end] || arr[begin] > arr[end]) {
			return -1;// 结束
		}
		System.out.println("begin:"+begin+"——end:"+end+"——center:"+mid);
		if (arr[mid] < n) {
			return search(arr, n, mid + 1, end);
		} else if (arr[mid] > n) {
			return search(arr, n, begin, mid - 1);
		} else {
			return mid;
		}
	}
}

执行效果:

begin:0——end:5——center:2 begin:0——end:1——center:0 begin:1——end:1——center:1 1 begin:0——end:5——center:2 begin:3——end:5——center:4 4

可以看到,最终要找的2和5就是在下标的1和4处,而且计算速度也是比较快的。

这个比较好理解,希望能对大家有点帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档