O(log N)
我想使用分而治之的方法及时找到数组中的最大元素。我在planet-source-code找到了一个工作代码。我将它翻译成 Python 如下:
def largest(arr,i,j):
global max1
global max2
if i == j:
max1 = arr[i]
else:
if i == j-1:
max1 = arr[i] if arr[i] > arr[j] else arr[j]
else:
mid = (i+j)/2
largest(arr,i,mid)
max2 = max1
largest(arr,mid+1,j)
if max2 > max1:
max1 = max2
当我使用数组[98,5,4,3,2,76,78,92]
并将代码称为
max1 = arr[0]
largest(arr,1,8)
我收到超出范围的列表索引错误。但是 C 代码返回正确的结果 98。任何人都可以发现我在做什么错误吗?