算法导论2-4 O(nlgn)时间复杂度求逆序对

def mergesort(nums,le,ri):
    if le>ri-2:
        return 0
    mi=le+(ri-le)//2
    a=mergesort(nums,le,mi)
    b=mergesort(nums,mi,ri)
    c=merge(nums,le,mi,ri)
    return a+b+c
def merge(nums,le,mi,ri):
    i,j=le,mi
    data=[]
    count=0
    while i

解释:就是在merge里加一个计数器,若A[I]>A[J]则A[J]和A[I]到A[MID-1]的所有元素都构成逆序对,即count+=(mid-1)-i+1=mid-i

你可能感兴趣的:(算法导论2-4 O(nlgn)时间复杂度求逆序对)