码迷,mamicode.com
首页 > 编程语言 > 详细

归并排序求逆序对poj2299

时间:2016-04-01 20:17:48      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

#include<iostream>
using namespace std;
int a[500100];
int t[500100];
long long ans;
void   sort(int l,int r)
{
    if(l==r) return ;
    int mid=(l+r)/2;
    sort(l,mid);
    sort(mid+1,r);
  int i,j,k;
  i=l;j=mid+1;k=l;
  while(i<=mid||j<=r)
  {
      if(j>r||(a[j]>a[i]&&i<=mid))
        t[k++]=a[i++];
      else {
            t[k++]=a[j++];
      ans+=mid+1-i;
      }

  }
   for (i=l;i<=r;i++)
        a[i]=t[i];
}
int main()
{
    int n;
    cin>>n;
    while(n!=0){
    for (int i=1;i<=n;i++)
        cin>>a[i];
    ans=0;
    sort(1,n);
    cout<<ans<<endl;
    cin>>n;
    }
    return 0;
}

归并排序求逆序对poj2299

标签:

原文地址:http://www.cnblogs.com/dlut-li/p/5346057.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!