Corsi di Laurea
ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.
Accetto l'uso dei cookie
Se avevi il programma che faceva la merge doveva stampare il vettore ottenuto dalla fusione ordinata dei due vettori di partenzaConfermo ho fatto anche io così, tranne che per la dichiarazione del vettore globale. Se eri nel t25 io ero quello che chiese il manuale al prof proprio perchè non ricordavo la parola chiave spaces.
Per sicurezza volevo chiederti: Ma a te come output cosa stampava? a me usciva "270000000".
#include
int vettoreGlobale[20];
int main()
{
int vettoreLocale1[]= {0,1,2,3,4,5};
int vettoreLocale2[]= {0,1,2,3,5};
inr lunghezzaLocale1, lunghezzaLocale2;
int i,k,j;
lunghezzaLocale1 = 6;
lunghezzaLocale2 = 5;
i = k = j = 0;
while((i{
if(vettoreLocale1[i]{
vettoreGlobale[k] = vettoreLocale1[i];
i++;
k++;
}
else
{
vettoreGlobale[k] = vettoreLocale2[j];
j++;
k++;
}
}
while(i{
vettoreGlobale[k] = vettoreLocale1[i];
i++;
k++;
}
while(j{
vettoreGlobale[k] = vettoreLocale2[j];
j++;
k++;
}
for(i = 0; i{
printf("%d",VettoreGlobale[i]);
}
return 0;
}
Ma appunto i vettori di ingresso erano già ordinati per questo era solo merge, se si fosse trattato di vettori disordinati ma l'output doveva essere lo stesso allora ci voleva la merge sortNella traccia 2006/2007 non è un Merge sort completo.
Me lo sto riguardando per bene adesso e mi accorgo che è solo 1 merge di due vettori che applica un criterio di selezione in ordine. In pratica se i due array presi singolarmente sono costituiti da elementi disordinati, il risultato finale non può mai essere la loro fusione ordinata. Per fare ciò bisognerebbe spezzettare il tutto ricorsivamente fino ad arrivare ad array di due elem e poi ricorsivamente ripetere l'ordinamento.
Questo comunque non toglie che io abbia sbagliato da qualche parte perchè mi usciva "270000000" e gli 0 erano solo due (se non ricordo male), uno nel primo ed uno nel secondo array.
0 utenti, 0 ospiti, 0 utenti anonimi