1.Facile
Quanta memoria aggiuntiva usa un merge sort standard su array?
- AO(log n)
- BO(n)
- CO(n²)
- DO(1)
2.Facile
Che cos'è la memoizzazione?
- AMemorizzare i risultati delle chiamate di funzione così che le chiamate ripetute ottengano la risposta dalla memoria
- BConvertire automaticamente la ricorsione in un ciclo equivalente così da non avere bisogno dello stack delle chiamate
- CLiberare la memoria dopo il ritorno di una funzione
- DScrivere commenti accanto a ogni riga di codice
3.Facile
Come funziona il selection sort?
- AScambia ripetutamente elementi adiacenti che sono nell'ordine sbagliato
- BTrova ripetutamente il minimo della parte non ordinata e lo scambia portandolo in testa
- CInserisce ogni elemento in una parte ordinata crescente spostando gli altri
- DDivide l'array a metà e le fonde
4.Media
Perché la programmazione dinamica non dà un vero guadagno di velocità per il merge sort?
- AI suoi sottoproblemi non si sovrappongono, quindi non c'è nulla da riutilizzare
- BIl merge sort è già O(n)
- CLa programmazione dinamica funziona solo sui problemi su grafi, non sugli array
- DIl merge sort non ha una struttura ricorsiva
5.Media
Perché molte routine di ordinamento delle librerie passano all'insertion sort per sottoarray molto piccoli?
- AGli algoritmi ricorsivi non gestiscono array con meno di 10 elementi
- BL'insertion sort usa meno memoria di qualsiasi altro algoritmo di ordinamento per input grandi
- CL'insertion sort è O(n log n) nel caso peggiore
- DL'insertion sort ha poco overhead ed è veloce su input piccoli o quasi ordinati
6.Media
La ricorrenza T(n) = 2T(n/2) + O(n) ha come soluzione:
- AO(log n)
- BO(n²)
- CO(n log n)
- DO(n)
7.Difficile
Perché l'algoritmo di Dijkstra può dare risultati errati quando alcuni pesi degli archi sono negativi?
- AEntra in un ciclo infinito a ogni arco negativo
- BFunziona solo sui grafi non orientati
- CI numeri negativi non si possono memorizzare in una coda di priorità
- DUn vertice viene considerato definitivo quando è estratto, ma un arco negativo successivo potrebbe ancora dargli un cammino più breve
8.Difficile
Qual è il costo ammortizzato dell'incremento di un contatore binario, dato che un incremento può invertire molti bit?
- AO(n) per incremento
- BO(log n) per incremento
- CO(n log n) per incremento
- DO(1) per incremento
Soluzioni
- 1. B · O(n)
- 2. A · Memorizzare i risultati delle chiamate di funzione così che le chiamate ripetute ottengano la risposta dalla memoria
- 3. B · Trova ripetutamente il minimo della parte non ordinata e lo scambia portandolo in testa
- 4. A · I suoi sottoproblemi non si sovrappongono, quindi non c'è nulla da riutilizzare
- 5. D · L'insertion sort ha poco overhead ed è veloce su input piccoli o quasi ordinati
- 6. C · O(n log n)
- 7. D · Un vertice viene considerato definitivo quando è estratto, ma un arco negativo successivo potrebbe ancora dargli un cammino più breve
- 8. D · O(1) per incremento
Soluzioni complete passo passo: esercitati su questo argomento su examproblems.com.