Si consideri il seguente frammento di programma:
void quack(int *a, int *b, int *c, int l) { int i=0, j=0, k=0; while(k < 2*l) { if((a[i] < b[j] && i < l) || j == l) { c[k]=a[i]; i++; } else { c[k]=b[j]; j++; } k++; } }Che problema risolve la funzione quack()?
Risposte:
- riempie c con gli elementi di a e b ordinati in modo crescente indipendentemente dall'ordine degli elementi in a e b
- riempie c con gli elementi di a e b ordinati in modo crescente se gli elementi in a e b sono ordinati in modo crescente
- riempie c in modo da riportare tutti i valori negativi di a all'inizio di c e quelli positivi di b alla fine di c
- nessuna delle precedenti.
Soluzione: b (riempie c con gli elementi di a e b ordinati in modo crescente se gli elementi in a e b sono ordinati in modo crescente)
Si tratta dell'algoritmo di fusione in c di due sequenze ordinate a e b di lunghezza l