二分查找的遞歸與非遞歸算法

public class Test01 {

	public static void main(String[] args) {
		int[] arr = {1,4,7,9,11,13,17,20,22,33,45,4345,2342323,324233223};
		int target = 45;
		binSearch(arr,target,0,arr.length-1);
		System.out.println(bin(arr, target));

	}
	//遞歸方法
	public static void binSearch(int[] arr,int target,int low,int high){
		if(low>high){
			System.out.println(-1);
			return;
		}
		int mid = (low+high)/2;
		if(arr[mid] == target){
			System.out.println(mid);
		}else if(arr[mid]<target){
			binSearch(arr,target,mid+1,high);
		}else{
			binSearch(arr,target,low,mid-1);
		}
	}
	//非遞歸方法
	public static int bin(int[] arr,int target){
		int low = 0;
		int high = arr.length-1;
		while(low<=high){
			int mid = (low+high)/2;
			if(arr[mid]==target){
				return mid;
			}else if(arr[mid]>target){
				high = mid-1;
			}else{
				low = mid+1;
			}
		}
		return -1;
	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章