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

匿名 (未验证) 提交于 2019-12-02 21:52:03

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

 

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