# 二分查找
def search(nums, target):
left = 0
right = len(nums)-1
while left<right:
mid = (left+right)//2
if nums[mid] <= nums[right]:
right = mid
else:
left = mid+1
pol = left
ans = binary_search(target, nums[:pol])
if ans == -1:
ans = binary_search(target, nums[pol:])
if ans != -1:
ans += len(nums[:pol])
return ans
# 二分查找index值函数
def binary_search(target, nums):
index = -1
left = 0
right = len(nums) -1
while left<=right:
mid = (left+right)//2
if nums[mid] < target:
left = mid+1
elif nums[mid]>target:
right = mid -1
else:
index = mid
break
return index
nums = [4, 5, 6, 7, 0, 1, 2]
print(search(nums, 0))
33_搜索旋转排序数组
最新推荐文章于 2024-04-07 11:26:26 发布