二分查找递归解法

二分查找递归解法

package LanQiao;


public class Demo06
{
	public static void main(String[] args)
	{	//数组(数组一定都是有序的)
		int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
		//要查找的元素
		int key = 2;
		//第一个元素的下标
		int low = 0;
		//最后一个元素的下标
		int high = arr.length - 1;
		//获取指定元素的下标
		int index = binarySearch(arr, low, high, key);
		if(index==-1){
			System.out.println("不含有该元素 "+key);
		}else{
			System.out.println("含有该元素  "+key+",下标是:"+index);
		}
}
	public static int binarySearch (int[] arr,int low,int high,int key)
	{
		if (low>high)
			return -1;
		int mid=low+((high-low)>>1);//(low+high)>>>1;//防止溢出,移位也更高效
		int midVal=arr[mid];
		if (midVal<key)
			
			return binarySearch(arr, mid+1, high, key);
		else if(midVal>key)
			return binarySearch(arr, low, mid-1, key);
		else if (midVal==key) 
			System.out.println("找到了该数字"+key);
			return mid;//key found
	}
}

运行结果

在这里插入图片描述

发布了11 篇原创文章 · 获赞 3 · 访问量 147

猜你喜欢

转载自blog.csdn.net/weixin_43362002/article/details/103971428