Si, ok, ma non riesco a capire come fa la funzione richiamando se stessa a ordinare i due sotto vettori, cioè la funzione richiama se stessa due volte, infatti:

codice:
merge_sort(a, from, mid);
merge_sort(a, mid + 1, to);
La prima chiamata ordina il primo sottovettore e la seconda il secondo sottovettore, ma in che modo vengono ordinati? Non riesco a raffigurarmelo...