二分查找问题模板

刷题不在多、不在快,在于理解并记住。
二分查找问题每次都去扣边界情况的话,太浪费时间,而且也容易出错。下面就给出一个最基本的二分查找问题的标准模板,仅供参考。

问题描述:
给定一个有序数组,求出某个数n的下标,若不存在返回-1,数组中没有重复元素。

标准模板:

int binarySearch(int [] arr, int n){
	if(arr == null || arr.length == 0){
		return -1;
	}
	
	int left = 0;
	int right = arr.length - 1;
	int mid;
	
	while(left + 1 < right){
		mid = left + (right - left) / 2;
		if(n < arr[mid]){
			right = mid;
		}else if(n > arr[mid]){
			left = mid;
		}else if(n == arr[mid]){
			return mid;
		}
	}
	if(n == arr[left]){
		return left;
	}
	if(n == arr[right]){
		return right;
	}
	return -1;
}

你可能感兴趣的:(算法,leetcode)