二分法查找数组的索引

二分法查找(折半查找)的前提:必须是有序数组。

 

使用递归(其中,item:是你要查找的值;low:是数组的起始下标;high:是数组的最后一个下标)

    public static int binarySearch(int[] arr,int item,int low,int high){

		if(low>high){
			throw new RuntimeException(item+"不存在于数组中");
		}

		int mid=(low+high)/2;
		int guess=arr[mid];

		if(item==guess){
			return mid;
		}else if(item<guess){
			return binarySearch(arr,item,low,mid-1);
		}else{
			return binarySearch(arr,item,mid+1,high);
		}   
	}

测试

    public static void main(String[] args) 
	{
		int []arr = {1,5,9,11,25,66,100,101};
		int i = binarySearch(arr,102,0,arr.length-1);
		System.out.println(i);
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值