Merge sort
View Code
#include#include #include #include #include int f_min(int x,int y) { if(x >1; Merge_sort(A,p,mid); Merge_sort(A,mid+1,q); Merge(A,p,mid,q); }}void solve() { int i,j,k; Merge_sort(num,1,N); for(i=1;i<=N;i++) printf("%d ",num[i]); printf("\n");}int main() { while(scanf("%d",&N)!=EOF) get_data(),solve(); return 0;}
Merge sort 计算逆序数
View Code
#include#include #include #include #include int f_min(int x,int y) { if(x R[j]) ans+=len1-i; if(L[i]<=R[j]) A[k]=L[i++]; else A[k]=R[j++]; } return ans;}int Merge_sort(int*A,int p,int q) { int ret=0; if(p >1; ret+=Merge_sort(A,p,mid); ret+=Merge_sort(A,mid+1,q); ret+=Merge(A,p,mid,q); } return ret;}void solve() { int i,j,k; ans=Merge_sort(num,1,N); printf("%d\n",ans);}int main() { while(scanf("%d",&N),N) get_data(),solve(); return 0;}