【发布时间】:2020-11-28 01:26:28
【问题描述】:
问题: 具有不同元素的排序数组 A[ ] 在某个未知点旋转,任务是找到其中的最小元素。
预期时间复杂度:O(Log n)
我的代码:
def binarySearch(arr, n):
s = 0
e = n-1
while e >= s:
mid = (s+e) // 2
if e==s:
return arr[e]
if mid == s and arr[mid] < arr[mid+1]:
return arr[mid]
elif mid == e and arr[mid] < arr[mid-1]:
return arr[mid]
elif arr[mid] < arr[mid - 1] and arr[mid] < arr[mid+1]:
return arr[mid]
elif arr[mid] < arr[e]:
e = mid - 1
else:
e = mid + 1
当我使用 Array = [10, 20, 30, 40, 50, 5, 7] 时,我得到答案 = 10,而它应该是 5。
错误可能是什么?
编辑:在回答之后,我还必须添加以下行来考虑剩下的一个案例
if e==s:
return arr[e]
【问题讨论】:
标签: python arrays python-3.x data-structures binary-search