我想执行二进制搜索以查找循环排序数组中的元素。我收到了一个我似乎无法理解的类型错误。任何建议/修改将不胜感激。二进制搜索Circulary旋转阵列
这里是我的代码:
def Binarysearch(a, low, high, x):
if low > high:
return -1
else:
mid = (low + high)/2
if x == a[mid]:
return mid
elif a[mid] <= a[high]:
if x > a[mid] and x <= a[high]:
return Binarysearch(a, mid+1, high, x)
elif a[mid] >= a[low]:
if x >= a[low] and x < a[mid]:
return Binarysearch(a, low, mid-1, x)
elem_list = [6, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5]
x = int(raw_input('enter search elemet'))
lenlist = len(elem_list)
result = Binarysearch(elem_list, 0, lenlist-1, x)
if result == -1:
print "Not found"
else:
print "Found it", elem_list[result]
我得到错误:
Line32: TypeError: list indices must be integers, not NoneType
不是一个完整的答案,但尝试更改'和'到'或'在'if'检查 – davedwards
试图。如果low> high: return low' –