求助!!!50分TLE,归并排序,python代码但是C++也这效果
查看原帖
求助!!!50分TLE,归并排序,python代码但是C++也这效果
435421
Aslan_warrior楼主2022/11/22 20:33

代码如下

def mer(a,l):
    global ans
    if l<=1:
        return a
    mid=l//2
    ll=l-mid
    # 分开
    left=mer(a[:mid],mid)
    right=mer(a[mid:],ll)
    # 合并
    p,q,tel=0,0,list()
    k=mid-p
    while mid>p and ll>q:
        if left[p]>right[q]:
            tel.append(right[q])
            ans+=(mid-p)
            q+=1
        else:
            tel.append(left[p])
            p+=1
    tel.extend(right[q:])
    tel.extend(left[p:])
    return tel
n=int(input())
a=list(map(int,input().split()))
ans=0
mer(a,n)
print(ans)
2022/11/22 20:33
加载中...