La scelta di un ordinamento dipende da alcune proprietà: complessità temporale, stabilità, utilizzo di memoria in-place, e la natura dei dati. Nessun ordinamento vince ovunque.
La scelta di un ordinamento dipende da alcune proprietà: complessità temporale, stabilità, utilizzo di memoria in-place, e la natura dei dati. Nessun ordinamento vince ovunque.
| Algoritmo | Tempo medio | Peggiore | Stabile | In-place |
|---|---|---|---|---|
| Insertion | O(n²) | O(n²) | Sì | Sì |
| Merge | O(n log n) | O(n log n) | Sì | No |
| Quick | O(n log n) | O(n²) | No | Sì |
| Heap | O(n log n) | O(n log n) | No | Sì |
# Most languages ship a tuned hybrid; prefer it in production
sorted(data, key=lambda x: x.priority) # stable Timsort in Python
Non implementare manualmente un ordinamento a meno che tu abbia un motivo specifico — gli ordinamenti di libreria (Timsort, introsort) sono ibridi collaudati.
Adattare l'ordinamento ai dati e ai requisiti evita sia tempo sprecato che bug sottili (come perdere la stabilità).
Comprendere i compromessi spiega perché le librerie standard hanno scelto ibridi come Timsort e introsort.
Questo giudizio comparativo — non memorizzare un algoritmo — è quello che l'ingegneria reale e i colloqui premiano.
Una raccolta di domande di colloquio IT con risposte dettagliate — da Junior a Senior.
Dona