Un algoritmo è una sequenza finita di istruzioni ben definite e implementabili da un computer, tipicamente usata per risolvere una classe di problemi o per eseguire un calcolo. Sono i mattoni fondamentali di qualsiasi software.
Gli aspetti chiave includono:
- Efficienza: Le sue performance in termini di tempo e memoria ($O(n)$).
- Correttezza: La sua capacità di produrre l’output corretto per tutti gli input validi.
- Pattern di progettazione: Approcci comuni come divide et impera, programmazione dinamica o algoritmi greedy.
