求解逆序对的个数关键在于利用分治法,将数组分成三段,分别求解在左半段内部的逆序对个数和右半段逆序对的个数,最后,在左半端和右半段排序完成后,两边合二为一的时候又有多少逆序对,解决思想与归并排序相同,只不过要加上计算逆序对的步骤。
#include<iostream>
using namespace std;
typedef long long LL;
const int maxn = 1e6 + 5;
int num[maxn];
int t[maxn];
LL merge_sort(int l, int r)
{
if (l == r)
{
return 0;
}