Sortarea prin interclasare - MergeSort



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];
	}
}

Observații:


Color Contrast

Text Size

Text Spacing

Reading Aids


Î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!


Summary

Î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!


Chatbot