逆序对
Posted qaqq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逆序对相关的知识,希望对你有一定的参考价值。
定义:对于给定的一段正整数序列,逆序对就是序列中ai>aj且i<j的有序对。
解决:利用归并排序
时间复杂度O(nlogn)
void qiu(int l,int r) { if(l>=r) return; int mid=(l+r)/2; qiu(l,mid); qiu(mid+1,r); int ll=l,rr=mid+1,k=1; while(ll<=mid&&rr<=r) { if(a[ll]>a[rr]) { b[k]=a[rr]; rr++; k++; ans+=mid-ll+1; } else { b[k]=a[ll]; ll++; k++; } } while(ll<=mid) { b[k]=a[ll]; ll++; k++; } while(rr<=r) { b[k]=a[rr]; rr++; k++; } for(int i=l,j=1;i<=r;i++,j++) a[i]=b[j]; }
以上是关于逆序对的主要内容,如果未能解决你的问题,请参考以下文章