我正在尝试编写一个函数来计算数组反转,使用分而治之。 以下是功能:
def count_inv_sort(array):
if len(array)==1:
result = (0,array)
else:
n1=int(math.floor(len(array)/2))
n2=len(array)-n1
#Divide
array_1=array[:n1]
array_2=array[-n2:]
#Conquer
(inv1, sorted_array_1)=count_inv_sort(array_1)
(inv2, sorted_array_2)=count_inv_sort(array_2)
#Merge
i=0
j=0
inv_count=0
for k in range(len(array)):
if (i != len(sorted_array_1)) & (j !=len(sorted_array_2)):
if sorted_array_1[i]<=sorted_array_2[j]:
array[k]=sorted_array_1[i]
i=i+1
inv_count=inv_count+j
else:
print('before assignment')
print(sorted_array_1)
array[k]=sorted_array_2[j]
print('after assignment')
print(sorted_array_1)
j=j+1
elif i == len(sorted_array_1):
array[k]=sorted_array_2[j]
j=j+1
else:
array[k]=sorted_array_1[i]
i=i+1
inv_count=inv_count+j
result = (inv_count+inv1+inv2, array)
return result
如果我使用列表输入解析函数,它会按预期工作。 但是如果我用numpy数组输入解析函数,它会返回不同的结果。问题出在else子句中,我将print放入其中。 有人可以帮助解释背后的原因,为什么函数不能用于数组。
谢谢!