package step3;
public class Task {
public int search(int n, int[] nums, int T) {
/********* Begin *********/
if (nums == null || nums.length == 0) {
return -1;
}
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == T) {
return mid;
}
// 判断左半段是否有序
if (nums[left] <= nums[mid]) {
// 判断目标值是否在左半段中
if (nums[left] <= T && T < nums[mid]) {
right = mid - 1;
} else {
left = mid + 1;
}
} else {
// 右半段有序
// 判断目标值是否在右半段中
if (nums[mid] < T && T <= nums[right]) {
left = mid + 1;
} else {
right = mid - 1;
}
}
}
return -1;
/********* End *********/
}
}
12-20
497
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
12-04
2357
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-04
482
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
01-03
2629
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
05-27