算法图解java版-二分查找

二分查找JAVA代码个人实现以及理解

`public static void main(String[] args) {
		//有序数组
		int[] a = new int[] {1,2,3,4,5};
		//目标数字
		int b = 1;
		boolean c = binarySearch(a,b);
		System.out.println(c);
	}
	public static boolean binarySearch(int[] a,int b) {
		if (a.length == 0) {
			return false;
		}
		//每次都检查中间的元素
		int low = 0;
		int high = a.length-1;
		while (low<=high) {
			int mid = (low+high)/2;
			//每次都检查中间值是否相等
			if (b == a[mid]) {
				return true;
			}
			//如果大了,就缩小high
			if (b<a[mid]) {
				high = mid-1;
			//如果小了,就增加low
			}else {
				low = mid+1;
			}
		}
		return false;
	}

二分查找是效率很高的查找方式,数据量越大,查找速度对比越显著.
实现思路为,将目标有序数组分为两段取中间值,中间值对比目标值,大于目标值则取中间值之前的数组,小于目标则取中间值之后的数组.
实现逻辑:
将目标数组分为两段,取中间值,就是长度/2,下标长度为2的数值就是该数组的中间值
中间值与目标值校对,大于目标值的话取前一段数组,这里的取前一段数组只是一个概念,并不需要真新建数组,只需要让循环只遍历前一段数组即可,再从前一段数组中取中间值,只需要修改high为上一次中间值的前一位,再重新计算中间值即可

你可能感兴趣的:(算法图解,java,二分法,算法,数据结构)