赞
踩
第5关 求逆序数
#include “step5.h”
extern int ans; //全局变量,累计逆序数
//两个相邻有序段归并
void Merge(int a[], int low, int mid, int high)
{
/Begin***/
int i=low,j=mid+1,k=0;
int *tmpa=(int *)malloc((high-low+1)*sizeof(int));
while(i<=mid&&j<=high){
if(a[i]<=a[j]){
tmpa[k]=a[i];
i++;k++;
}
else{
ans=ans+mid-i+1;
tmpa[k]=a[j];
k++;j++;
}
}
while(i<=mid){
tmpa[k]=a[i];
k++;i++;
}
while(j<=mid){
tmpa[k]=a[j];
k++;j++;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。