算法题/求数组的逆序对

来源:互联网 发布:js判断有无滚动条 编辑:程序博客网 时间:2024/05/20 04:51

python2.7

在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。给你一个数组,求出这个数组中逆序对的总数。
概括:如果a[i] > a[j] 且 i < j, a[i] 和 a[j] 构成一个逆序对。
样例
序列 [2, 4, 1, 3, 5] 中,有 3 个逆序对 (2, 1), (4, 1), (4, 3),则返回 3 。
思路:最简单的想法,扫描整个数组,时间复杂度O(n^2),后续改进

#coding:utf-8def get_nixudui(a):    count = 0    arr = []    for i in range(len(a)):        for j in range(i+1,len(a)):            if a[i] > a[j]:                arr.append([a[i],a[j]])                count += 1    return arrprint(get_nixudui([7,5,6,4]))

这里写图片描述

原创粉丝点击