0

反転を検索するアルゴリズムを実装しようとしています。更新されたグローバル変数の印刷に問題がありますc。printステートメントはどこに置くべきですか?

後で実行時間をテストするためにタイミング関数を実行するので、ボイラープレート(?) を含むメソッドを使用することをお勧めします。結果を印刷することしかできなかった場合(8)。マージ関数内に配置すると(リターンCの前)、最大8までのすべての値が返されます。プロセスの最後にcを出力するだけです。

c=0
def merge(A,B):

    global c
    C=[]
    lenA=len(A)
    lenB=len(B)
    i=0
    j=0
    while i<lenA and j<lenB:
        if A[i]<=B[j]:
            C.append(A[i])
            i=i+1
        else:
            c=c+len(A)-i 
            C.append(B[j])
            j=j+1
    if i==lenA:  #A get to the end
        C.extend(B[j:])
    else:
        C.extend(A[i:])
    return C


def inversions_divide_conquer(Array):
    N=len(Array)
    if N>1:
        S1=inversions_divide_conquer(Array[0:N/2])
        S2=inversions_divide_conquer(Array[N/2:])
        return merge(S1,S2)
    else:
        return Array



if __name__ == '__main__':

    inversions_divide_conquer([4, 1, 3, 2, 9, 1])
4

1 に答える 1