Advertisement

问题F:求逆序对(Python)

阅读量:

题目描述

对于一个由a1,a2,…,an组成的序列,若存在i<j且ai>aj的情况,则称这一对元素为逆序对,现要求计算该序列中逆序对的总数。
需要注意的是,n的取值范围不超过105,且每个元素ai的数值上限为105。

输入

第一行给出数值n,用于表示序列的长度。
随后的n行内容中,第i+1行对应的是序列中的第i个数值。

小标题

全部逆序对的总数量。

样例输入 Copy

4
3
2
3
2

样例输出 Copy

3

复制代码
    def reverseNumMerge(a,lt,rt):
    if lt==rt:
        return 0
    mid = (lt+rt)//2
    x1 = reverseNumMerge(a,lt,mid)
    x2 = reverseNumMerge(a,mid+1,rt)
    return x1+x2+merge(a,lt,mid,rt)
    def merge(a,lt,mid,rt):
    x = 0
    tmp = [0]*(rt-lt+1)
    i,j,k = lt,mid+1,0
    while i<= mid and j<=rt:
        if a[i] <=a[j]:

全部评论 (0)

还没有任何评论哟~