#include #include void Merge(int *A, int first1, int last1, int last2plus1) { int tmp[last2plus1-first1]; int posA=first1; int posB=last1+1; //cout<<"Entro!"<=last2plus1 || A[posA]<=A[posB]) ) { tmp[pos]=A[posA++]; } else { tmp[pos]=A[posB++]; } } for(int pos=0; pos= to_escluso -1) return; MergeSort(A, from_incluso, (from_incluso+to_escluso)/2); MergeSort(A, (from_incluso+to_escluso)/2, to_escluso); Merge(A, from_incluso, (from_incluso+to_escluso)/2, to_escluso); } int main(int argc, char** argv) { int A[20]; for (int i = 0; i < 20; i++) A[i] = i; MergeSort(A,0,20); for (int i = 0; i < 20; i++) cout << A[i] << endl; return 0; }