I notebook del corso¶
Ogni capitolo degli algoritmi ha i suoi notebook Colab, uno per linguaggio: Python, C++ e Java; ogni algoritmo ha anche il suo notebook, nei tre linguaggi (è quello che si apre dai pulsanti sotto lo pseudocodice). Nelle pagine del sito gli algoritmi sono scritti in pseudocodice; nei notebook gli stessi algoritmi sono implementati (con gli array indicizzati da 0) ed eseguiti sugli esempi delle pagine, con le tracce passo per passo e le celle «Prova tu» per provarli con dati tuoi.
- Cos'è Colab. Google Colab esegue i notebook nel browser, su un computer di Google: serve solo un account Google, sul tuo computer non si installa niente.
- Come si apre. Clicca su un badge della tabella, oppure sui pulsanti «Esegui in Colab» sotto lo pseudocodice nelle pagine dei capitoli. Per conservare le tue modifiche: File → Salva una copia in Drive.
- Come si esegue. Runtime → Esegui tutte (Ctrl+F9) esegue tutte le celle dall'alto in basso; una cella sola si esegue con Maiusc+Invio.
- C++ e Java. Ogni programma viene scritto su un file da una cella (
%%writefile) e compilato ed eseguito nella cella successiva (g++,javac,java): tutto avviene in Colab. - Un notebook per linguaggio. I tre notebook di un capitolo contengono gli stessi algoritmi e stampano gli stessi risultati: ognuno sceglie il linguaggio che preferisce, o li confronta.
Il link .ipynb apre il notebook su GitHub, da dove si scarica (Download raw file) per usarlo con Jupyter sul proprio computer.
Tutto il capitolo¶
Un notebook per capitolo e per linguaggio, con tutti gli algoritmi del capitolo.
Un notebook per algoritmo¶
Gli stessi algoritmi, uno per notebook: ogni notebook contiene solo ciò che serve a quell'algoritmo (codice, esecuzione sugli esempi del capitolo, «Prova tu»). Gli algoritmi che il capitolo tratta insieme (per esempio MergeSort e la sua procedura Merge) stanno nello stesso notebook.
2. Pseudocodice¶
3. Algoritmi di ordinamento¶
4. Ricerca lineare e binaria¶
5. Algoritmi numerici¶
| Algoritmo | Python | C++ | Java |
|---|---|---|---|
ChangeOfBase |
|||
BasicPrimalityTest |
|||
PrimalityTest |
|||
SieveOfEratosthenes |
|||
EuclideanAlgorithm |
11. Dimensione dell'input¶
12. Tempo di esecuzione¶
13. Correttezza¶
14. Ricorsione¶
15. Equazioni di ricorrenza¶
17. Algoritmi ricorsivi¶
| Algoritmo | Python | C++ | Java |
|---|---|---|---|
SumIterative, RecursiveSum e RecursiveSumLinear |
|||
MergeSort e Merge |
|||
RecursiveBinarySearch |
|||
BruteForceMaximumSubarray |
|||
FindMaximumSubarray e FindMaxCrossingSubarray |
|||
Kadane |