归并排序求逆序对板子

int a[maxn],b[maxn];
int res;
void merge(int l,int r){
	if(l==r)return;
	int mid=l+r>>1;
	merge(l,mid);merge(mid+1,r);
	int i=l,j=mid+1,p=l;
	while(i<=mid&&j<=r){
		if(a[i]<=a[j]){
			b[p++]=a[i];i++;
		}else{
			b[p++]=a[j];j++;
			res+=mid+1-i;
		}
	}
	while(i<=mid){
		b[p++]=a[i++];
	}
	while(j<=r){
		b[p++]=a[j++];
	}
	for(int s=l;s<=r;s++){
		a[s]=b[s];
	}
}
posted @ 2025-03-09 15:51  Marinaco  阅读(8)  评论(0)    收藏  举报
//雪花飘落效果