Vai al contenuto

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

Algoritmo Python C++ Java
FindMaximum Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
CountPositive Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
IsSorted Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
ScalarProduct Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
ReverseArray Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)

3. Algoritmi di ordinamento

Algoritmo Python C++ Java
InsertionSort Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
ExchangeSort Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
SelectionSort Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)

4. Ricerca lineare e binaria

Algoritmo Python C++ Java
LinearSearch Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
BinarySearch Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)

5. Algoritmi numerici

Algoritmo Python C++ Java
ChangeOfBase Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
BasicPrimalityTest Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
PrimalityTest Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
SieveOfEratosthenes Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
EuclideanAlgorithm Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)

11. Dimensione dell'input

Algoritmo Python C++ Java
SumArray Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)

12. Tempo di esecuzione

Algoritmo Python C++ Java
FindMaximum Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
InsertionSort Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
ChangeToBase2 Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
PrimalityTest Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)

13. Correttezza

Algoritmo Python C++ Java
FindMaximum Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
InsertionSort Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
BinarySearch Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
EuclideanAlgorithm Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)

14. Ricorsione

Algoritmo Python C++ Java
Factorial Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
Fib Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
IterativeFib Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
RecursiveGCD Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
FastPower Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
Hanoi Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)

15. Equazioni di ricorrenza

Algoritmo Python C++ Java
RecursiveSum Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)

17. Algoritmi ricorsivi

Algoritmo Python C++ Java
SumIterative, RecursiveSum e RecursiveSumLinear Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
MergeSort e Merge Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
RecursiveBinarySearch Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
BruteForceMaximumSubarray Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
FindMaximumSubarray e FindMaxCrossingSubarray Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
Kadane Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)

18. Algoritmi ricorsivi e iterativi a confronto

Algoritmo Python C++ Java
SumExplicitStack Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
MergeSortBottomUp Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
PowerIt Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
Kadane Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
FibRec, FibMemo e FibIt Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
GCDRec e GCDIt Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)
RecBinarySearch e ItBinarySearch Apri in Colab (Python) Apri in Colab (C++) Apri in Colab (Java)