在递归函数

时间:2018-04-25 07:59:43

标签: python arrays numpy

我正在尝试编写一个函数来计算数组反转,使用分而治之。 以下是功能:

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放入其中。 有人可以帮助解释背后的原因,为什么函数不能用于数组。

谢谢!

0 个答案:

没有答案