搜索旋转排序数组
func search(nums []int, target int) int {
n := len(nums)
left, right := 0, n - 1
for left <= right {
mid := left + (right - left) >> 1
if nums[mid] == target {
return mid
}
if nums[0] <= nums[mid] { // [0, mid] 有序
if nums[0] <= target && target < nums[mid] {
right = mid - 1
} else {
left = mid + 1
}
} else { // [mid+1, n) 有序
if nums[mid] < target && target <= nums[n - 1] {
left = mid + 1
} else {
right = mid - 1
}
}
}
return -1