题目
考虑1,2,…,n (n <= 100000)的排列i1,i2,…,in,如果其中存在j,k,满足j < k 且ij> ik,那么就称(ij,ik)是这个排列的一个逆序。一个排列含有逆序的个数称为这个排列的逆序数。例如排列263451 含有8个逆序(2,1),(6,3),(6,4),(6,5),(6,1),(3,1),(4,1),(5,1),因此该排列的逆序数就是8。现给定1,2,…,n的一个排列,求它的逆序数。
思路
- 两两进行比较,计数
- 分治 O(nlogn)
- 将数组分为两半(需要严格凉划分,最多只能差一个)
- 再求一个来自左边,一个来自右边的逆序数量。 O(n)实现,需要两边都是排好序的
可以由归并排序并计数得到。