二分查找的前提:
并不是所有的数组都能使用二分查找
使用二分查找的前提是该数组是一个有序数组
1.确保数组是单调递增或者单调递减的
2.存在明确的上下界
3.能够通过索引进行访问(由此可见数组比链表更适合二分查找)
class Solution {
public int search(int[] nums, int target) {
//左界右界
int left =0;
int right = nums.length-1;
//一直循环查找直到左界右界相等
while(left<=right){
//int mid =(left+right)/2;防止left,right相加超出整数范围
int mid = left+(right-left)/2;
if (target == nums[mid]){
return mid;
}else if(target < nums[mid]){
right=mid-1;
}else if(target > nums[mid]) {
left=mid+1;
}
}//end while
return -1;
}
}