#include#include #include using namespace std; //int c=0; void g(int a[],int l,int r){ if(l>=r)return; else{ int m=0; m=(l+r)/2; g(a,l,m); g(a,m+1,r);//r-l+1个 int* b=new int[r-l+1]; copy(a+l,a+r+1,b); int p1,p2; p1=0; p2=m-l+1; cout<<"合并数组从下标"< m-l){ a[i]=b[p2]; p2++; } else if(p2>r-l){ a[i]=b[p1]; p1++; } else if(b[p1]>b[p2]){ a[i]=b[p2]; /// c+=m-l+1-p1; p2++; } else if(b[p1]<=b[p2]){ a[i]=b[p1]; p1++; } cout< 运行结果:



