Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Mergesort(int *a, int l, int r ,int *b, bool (*cmp)(int,int))
- {
- int i,j,k,m;
- if (r-l>0)
- {
- m=(r+l)/2;
- Mergesort(a,l,m,b,cmp);
- Mergesort(a,m+1,r,b,cmp);
- for(i=m; i>=l;i--) *(b+i)=*(a+i);
- FOR(j,m+1,r) *(b+r+m+1-j)=*(a+j);
- //cout<<endl;
- //FOR(k,1,n) cout<<b[k]<<" ";
- //cout<<endl;
- //cout<<i<<" "<<j<<" "<<l<<" "<<r<<endl;
- //cout<<endl;
- i++;
- j--;
- FOR(k,l,r)
- if (cmp(*(b+i),*(b+j)))
- {*(a+k)=*(b+i); i++;
- // cout<<k<<" "<<a[k]<<endl;
- }
- else
- {*(a+k)=*(b+j); j--;
- // cout<<k<<" "<<a[k]<<endl;
- }
- }
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement