Se chiamo la funzione merge sul vettore scritto da te il valore di s = 3 d non puo essere 9 ma 2 e c dovrebbe essere o 92 visto che è metà del vettore
La funzione merge() si aspetta semplicemente due partizioni ordinate, dove la prima partizione inizia dall'indice s e termina all'indice c, mentre la seconda partizione inizia dall'indice c+1 e termina all'indice d.
Considerando il vettore
v = 3 5 2 0 1 7 9 2 6 8 3 2
con la chiamata a funzione merge(v, 3, 6, 9), le due partizioni da unire sono le seguenti:
3 5 2
0 1 7 9 2 6 8 3 2
la funzione in pratica riempie un array (di dimensione pari alla somma degli elementi delle 2 partizioni) prendendo di volta in volta il minimo tra l'elemento corrente (che parte dal primo) delle due partizioni. Tale vettore viene poi sostituito alle 2 partizioni. Quindi all'uscita dalla funzione sarà
v = 3 5 2
0 1 2 6 7 8 9 3 2
Chi dorme in democrazia, si sveglia in dittatura.