Sortarea prin interclasare, sau Mergesort este o metodă eficientă de sortare a elementelor unui tablou, bazată pe următoarea idee: dacă prima jumătate a tabloului are elementele sortate și a doua jumătate are de asemenea elementele sortate, prin interclasare se va obține tabloul sortat.
Sortarea prin interclasare este un exemplu tipic de algoritm divide et impera: se sortează o secvență delimitată de indicii st și dr:
În secvența următoare tabloul tmp se consideră declarat global, de aceeași dimensiune ca v:
void MergeSort(int v[], int st, int dr)
{
if(st < dr)
{
int m = (st + dr) / 2;
MergeSort(v, st , m);
MergeSort(v, m + 1 , dr);
//Interclasare
int i = st, j = m + 1, k = 0;
while( i <= m && j <= dr )
if( v[i] < v[j])
tmp[++k] = v[i++];
else
tmp[++k] = v[j++];
while(i <= m)
tmp[++k] = v[i++];
while(j <= dr)
tmp[++k] = v[j++];
for(i = st , j = 1 ; i <= dr ; i ++ , j ++)
v[i] = tmp[j];
}
}
În această secțiune poți genera un rezumat al conținutului paginii folosind AI! Fii liber să folosești butonul de mai jos oricând ești pe grabă și nu ai timp să înveți tot!
În această secțiune poți întreba expertul nostru robot orice legat de nelămuririle pe care le-ai întâlnit de-a lungul lecțiilor! Fii liber să folosești butonul de mai jos oricând ai nevoie de explicații adiționale!