前言
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-search
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
一、基于递归思想
class Solution {
public int[] nums;
public int target;
public int search(int[] nums, int target) {
this.nums=nums;
this.target=target;
return midsearch(0,nums.length-1);
}
public int midsearch(int left,int right){
if(left>right){
return -1;
}
int mid=(left+right)/2;
if(nums[mid]>target){
return midsearch(left,mid-1);
}else if(nums[mid]<target){
return midsearch(mid+1,right);
}else{
return mid;
}
}
}
二、循环查找
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;
if(nums[mid]==target){
return mid;
}
if(nums[mid]>target){
right=mid-1;
}
if(nums[mid]<target){
left=mid+1;
}
}
return -1;
}
}