时间复杂度应该是Nlog2N,有空研究研究.
#include<stdio.h>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
int inv(int n,char a[]){
int l=n>>1,r=n-l,i,j;
char *v=(char*)malloc(n);
int ret=(r>1?(inv(l,a)+inv(r,a+l)):0);
for(i=j=0;i<=l;v[i+j]=a[i],i++)
for(ret+=j;j<r&&(i==l||a[i]>a[l+j]);v[i+j]=a[l+j],j++);
memcpy(a,v,n);
return ret;
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
int main(){
char a[]="abcdef";
printf("%d\n",inv(strlen(a),a));
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)