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

北慕城南 提交于 2019-11-30 19:01:06

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));
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!