【Java】 二分查找算法(递归+循环)

1. 二分查找算法——循环

public static  int search(int[] arr,int k){
		int start=0;
		int end=arr.length-1;
		while(start<=end){
			int mid=(start+end)/2;
			if(arr[mid]==k)
				return mid;
			else if(arr[mid]>k)
				end=mid-1;
			else
				start=mid+1;
		}
		return -1;
	}

2. 二分查找算法——递归

public static int search2(int[] arr,int k,int start,int end){
		if(start>end)
			return  -1;
		int mid=(start+end)/2;
		if(arr[mid]==k)
			return mid;
		else if(arr[mid]>k){
			return search2 (arr,k,start,mid-1);
		}else{
			return search2(arr,k,mid+1,end);
		}
		
	}

 

测试:

public static void main(String[] args) {
     int [] arr={2,4,5,9,10,24};
     int k=9;
     System.out.println(search(arr,k));
     System.out.println(search(arr,2));
     System.out.println(search(arr,24));
     System.out.println(search(arr,0));

     System.out.println(search2(arr,k,0,arr.length-1));
     System.out.println(search2(arr,2,0,arr.length-1));
     System.out.println(search2(arr,24,0,arr.length-1));
     System.out.println(search2(arr,0,0,arr.length-1));
}

 

posted @ 2019-10-08 16:38  Temprol  阅读(537)  评论(0编辑  收藏  举报