package 小米oj;
public class 排列逆序数 {
public static void main(String[] args) {
int a[] = {2,6,3,4,5,1};
use(a);
System.out.println(count);
}
public static int count=0;
public static void use(int a[])
{
merge(a,0,(a.length-1)/2,a.length-1);
}
public static void mergesort(int a[],int start,int mid,int end)
{
if(start==end)
return;
int temp[] = new int[end-start+2];
int p=0;
int i=start,j=mid+1;
while(i<=mid&&j<=end)
{
if(a[i]<=a[j])
{
temp[p++] = a[i++];
}
else {
count+=mid-i+1;
temp[p++] = a[j++];
}}
while(i<=mid)
{
temp[p++] = a[i++];
}
while(j<=end)
{
temp[p++] =a[j++];
}
p=0;
for(int pp=start;pp<=end;pp++)
{
a[pp] = temp[p++];
}
}
public static void merge(int a[],int start,int mid,int end)
{
if(start+1!=end)
{if(start!=end) {
merge(a,start,(start+mid)/2,mid);
merge(a,(mid+1),(mid+1+end)/2,end);}
}
mergesort(a,start,mid,end);
}
}