题目: 搜索旋转排序数组
来自智得网
分析
二分法前后两次查询的时候如果发现左边的数字大于右侧的数字,说明其中发生了旋转。
找到其中旋转的精确位置。
之后在两侧分别使用二分法搜索数组。
题解
二分法
public class Solutiion {
public static int solute(nums[] a, int target) {
int left = 0;
int right = a.length-1;
int position = -1;
while(left<=right) {
int mid = (left+right)/2;
if(nums[mid] == target) {
return mid;
}else if(nums[mid]<=nums[right]) {
if(target>=nums[mid] && target <= nums[right]) {
left = mid+1;
}else {
right = mid-1;
}
}else {
if(target<=nums[mid] && target >= nums[L]) {
right = mid-1;
}else {
left = mid+1;
}
}
}
return position;
}
}