33.搜索旋转排序数组
class Solution {
public int search(int[] nums, int target) {
int start=0;
int end=nums.length-1;
int mid;
//注意:start和end是数组下标
while(start<=end){
mid=start+(end-start)/2;
if(nums[mid]==target){
return mid;
}
//前半部分有序,注意此处用小于等于(一般都是小于等于)
if(nums[start]<=nums[mid]){
//target在前半部分,
if(target >= nums[start] && target < nums[mid]){//因为前面判断过了target !=nums[mid]
//将区间转化到前半部分
end=mid-1;
}else{
start=mid+1;
}
}else{
//后半部分有序
if(target <= nums[end] && target > nums[mid])
start=mid+1;
else
end=mid-1;
}
}
return -1;
}
}