我正在尝试理解mergeSort算法并运行此链接(https://medium.com/@ssbothwell/counting-inversions-with-merge-sort-4d9910dc95f0)上提供的代码
但是,我得到了错误值error:形状为(1,)的不可广播输出操作数与广播形状(0,)不匹配。
我无法理解为什么会出现这种情况,因为代码在arr=[1,20,6,4,5]这样的小示例上工作。(数组测试包含50个随机数)
有人能解释一下我做错了什么吗?有人能解释一下我们什么时候得到形状(0,)?是数组为空时吗?你知道吗
test = numbers[0:50]
def mergeSortInversions(arr):
if len(arr) == 1:
return arr, 0
else:
mid = len(arr)//2
a = arr[:mid]
b = arr[mid:]
a, ai = mergeSortInversions(a)
b, bi = mergeSortInversions(b)
c = []
i = 0
j = 0
inversions = 0 + ai + bi
while i < len(a) and j < len(b):
if a[i] <= b[j]:
c.append(a[i])
i += 1
else:
c.append(b[j])
j += 1
inversions += (len(a)-i)
c += a[i:]
c += b[j:]
return c, inversions
arr = [1, 20, 6, 4, 5]
#print('test', np.shape(test))
x, inv = mergeSortInversions(test)
print(inv)
好吧,我想出来了,你不能给空数组添加元素。你知道吗
我用这个条件解决了
相关问题 更多 >
编程相关推荐