原理:每次比较后将查找一分为二。
步骤:
1、排序
2、二分查找
3、找到所需元素
示例:数组【-8,0,1,7,9,12,15,32,105,200】中找到 目标值12
①将空间一分为二【-8,0,1,7,9】和【12,15,32,105,200】,【-8,0,1,7,9】中不存在12;
②在【12,15,32,105,200】中寻找,将【12,15,32,105,200】一分为二,【12,15】和【32,105,200】;
③在【12,15,32】一分为二,【12】和【15,32】,找到了12。
代码实现:
int binarySearch(int[] nums, int target){
if(nums == null || nums.length == 0)
return -1;
int left = 0, right = nums.length - 1;
while(left <= right){
int mid = left + (right - left) / 2;
if(nums[mid] == target){ return mid; }
else if(nums[mid] < target) { left = mid + 1; }
else { right = mid - 1; }
}
return -1;
}