SlideShare a Scribd company logo
1 of 99
Download to read offline
Uniurb4HS
alessandrobogliolo
Uniurb4HSL’Università di Urbino per le Scuole Superiori
Algoritmi intuitivi
alessandro bogliolo
01.02. Mettiamo in ordine
Uniurb4HS
alessandrobogliolo
Tuttiinfila
0 1 2 3 4 5 6
altezza[3]
indice
altezza 175 165 110 180 150 100 170
Uniurb4HS
alessandrobogliolo
Ordinamentodiuna
sequenza
0 1 2 3 4 5 6
altezza[3]
indice
altezza 175 165 110 180 150 100 170
Input
• Data una sequenza di elementi tra i quali esista una relazione d’ordine
• Dato il criterio di ordinamento da applicare
Output
• Restituire la sequenza ordinata secondo il criterio dato
Uniurb4HS
alessandrobogliolo
Input
0 1 2 3 4 5 6indice
altezza 175 165 110 180 150 100 170
Uniurb4HS
alessandrobogliolo
Output
0 1 2 3 4 5 6
100 110 150 165 170 175 180
Uniurb4HS
alessandrobogliolo
1. SELECTION SORT
Cerchiamo nella sequenza data l’elemento più piccolo e lo mettiamo
all’inizio della fila
Procediamo selezionando sempre il più piccolo tra quelli che restano e lo
aggiungiamo alla fila ordinata che stiamo componendo
Uniurb4HS
alessandrobogliolo
7
SELECTIONSORT
Uniurb4HS
alessandrobogliolo
6
SELECTIONSORT
Uniurb4HS
alessandrobogliolo
5
SELECTIONSORT
Uniurb4HS
alessandrobogliolo
4
SELECTIONSORT
Uniurb4HS
alessandrobogliolo
3
SELECTIONSORT
Uniurb4HS
alessandrobogliolo
2
SELECTIONSORT
Uniurb4HS
alessandrobogliolo
1
SELECTIONSORT
Uniurb4HS
alessandrobogliolo
7+6+5+4+3+2+1
7*8/2
SELECTIONSORT
Uniurb4HS
alessandrobogliolo
0 1 2 3 4 5 6indice
altezza 175 165 110 180 150 100 170
SELECTIONSORT
175min
7N
da ordinareordinato
0i
0j
0pos
i indica il numero di elementi già ordinati e la posizione dove inserire
il prossimo elemento in ordine
j scorre tutti gli indici degli elementi ancora da ordinare
pos memorizza la posizione del più piccolo (min) degli elementi ancora da ordinare
Uniurb4HS
alessandrobogliolo
0 1 2 3 4 5 6indice
altezza 175 165 110 180 150 100 170
SELECTIONSORT
165min
7N
da ordinareordinato
0i
1j
1pos
Sposto l’indice j, confronto altezza[j] con min, siccome
l’elemento in posizione j è minore di min, aggiorno min
e pos.
Uniurb4HS
alessandrobogliolo
0 1 2 3 4 5 6indice
altezza 175 165 110 180 150 100 170
SELECTIONSORT
110min
7N
da ordinareordinato
0i
2j
2pos
Sposto l’indice j, confronto altezza[j] con min, siccome
l’elemento in posizione j è minore di min, aggiorno min
e pos.
Uniurb4HS
alessandrobogliolo
0 1 2 3 4 5 6indice
altezza 175 165 110 180 150 100 170
SELECTIONSORT
110min
7N
da ordinareordinato
0i
3j
2pos
Sposto l’indice j, confronto altezza[j] con
min, ma siccome l’elemento in posizione
j NON è minore di min, NON aggiorno
min e pos.
Uniurb4HS
alessandrobogliolo
0 1 2 3 4 5 6indice
altezza 175 165 110 180 150 100 170
SELECTIONSORT
110min
7N
da ordinareordinato
0i
4j
2pos
Sposto l’indice j, confronto altezza[j] con
min, ma siccome l’elemento in posizione
j NON è minore di min, NON aggiorno
min e pos.
Uniurb4HS
alessandrobogliolo
0 1 2 3 4 5 6indice
altezza 175 165 110 180 150 100 170
SELECTIONSORT
100min
7N
da ordinareordinato
0i
5j
5pos
Sposto l’indice j, confronto altezza[j] con min, siccome
l’elemento in posizione j è minore di min, aggiorno min
e pos.
Uniurb4HS
alessandrobogliolo
0 1 2 3 4 5 6indice
altezza 175 165 110 180 150 100 170
SELECTIONSORT
100min
7N
da ordinareordinato
0i
6j
5pos
Sposto l’indice j, confronto altezza[j] con min, ma
siccome l’elemento in posizione j NON è minore di min,
NON aggiorno min e pos.
Uniurb4HS
alessandrobogliolo
0 1 2 3 4 5 6indice
altezza 175 165 110 180 150 100 170
SELECTIONSORT
100min
7N
da ordinareordinato
0i
6j
5pos
Scambio gli elementi in posizione i e pos
Incremento i
Cerco nuovamente il minimo tra quelli da ordinare
Uniurb4HS
alessandrobogliolo
0 1 2 3 4 5 6indice
altezza 100 165 110 180 150 175 170
SELECTIONSORT
110min
7N
da ordinareordinato
1i
6j
2pos
Uniurb4HS
alessandrobogliolo
0 1 2 3 4 5 6indice
altezza 100 110 165 180 150 175 170
SELECTIONSORT
min
7N
da ordinareordinato
2i
6j
4pos
150
Uniurb4HS
alessandrobogliolo
0 1 2 3 4 5 6indice
altezza 100 110 150 180 165 175 170
SELECTIONSORT
min
7N
da ordinareordinato
3i
6j
4pos
165
Uniurb4HS
alessandrobogliolo
0 1 2 3 4 5 6indice
altezza 100 110 150 165 180 175 170
SELECTIONSORT
min
7N
da ordinareordinato
4i
6j
6pos
170
Uniurb4HS
alessandrobogliolo
0 1 2 3 4 5 6indice
altezza 100 110 150 165 170 175 180
SELECTIONSORT
min
7N
da ordinareordinato
5i
6j
5pos
175
Uniurb4HS
alessandrobogliolo
0 1 2 3 4 5 6indice
altezza 100 110 150 165 170 175 180
SELECTIONSORT
180min
7N
da ordinareordinato
6i
6j
6pos
Uniurb4HS
alessandrobogliolo
• Invariante di ciclo: ad ogni ciclo k
• ik è il numero di elementi già ordinati
• altezzak[m]<=altezzak[m+1] per ogni m<k
• altezzak[m]<=altezzak[posk]<=altezzak[n] per ogni m<k, n>=k
• altezzak[] contiene tutti gli elementi dati
• Quando k=N-1
• I primi N-1 elementi sono ordinati e tutti <= all’unico non ancora
ordinato, che quindi rispetta a sua volta il criterio di ordinamento
crescente
Selectionsort
Correttezza
Uniurb4HS
alessandrobogliolo
Selectionsort
Complessità
N
N N-1 N-2
2
1
𝑓 𝑛 = ෍
ℎ=1
𝑛
ℎ = 1 + 2 + ⋯ + 𝑛 =
𝑛 𝑛 + 1
2
=
𝑛2
2
+
𝑛
2
∈ 𝑂(𝑛2)
Uniurb4HS
alessandrobogliolo
Selectionsort
Complessità
𝑓 𝑛 = ෍
ℎ=1
𝑛
ℎ = 1 + 2 + ⋯ + 𝑛 =
𝑛 𝑛 + 1
2
=
𝑛2
2
+
𝑛
2
∈ 𝑂(𝑛2
)
1 99 1002 3 4
100 2 199 98 97
101 101 101101 101 101
100x101/2
Uniurb4HS
alessandrobogliolo
Uniurb4HSL’Università di Urbino per le Scuole Superiori
Algoritmi intuitivi
alessandro bogliolo
01.02. Mettiamo in ordine
seconda parte
Uniurb4HS
alessandrobogliolo
2. INSERTION SORT
Prendo gli elementi ad uno ad uno nell’ordine in cui mi sono dati e cerco la
posizione giusta in cui inserirli nel nuovo array che sto mettendo in ordine
Uniurb4HS
alessandrobogliolo
INSERTIONSORT
Uniurb4HS
alessandrobogliolo
1
INSERTIONSORT
Uniurb4HS
alessandrobogliolo
2
(1)
INSERTIONSORT
Uniurb4HS
alessandrobogliolo
3
(1)
INSERTIONSORT
Uniurb4HS
alessandrobogliolo
4
(3)
INSERTIONSORT
Uniurb4HS
alessandrobogliolo
5
(4)
INSERTIONSORT
Uniurb4HS
alessandrobogliolo
6
(1)
INSERTIONSORT
Uniurb4HS
alessandrobogliolo
7
(4)
1+1+3+4+1+4
<7*8/2
INSERTIONSORT
Uniurb4HS
alessandrobogliolo
3. BUBBLE SORT
Partendo dall’ultimo elemento confronto coppie di elementi vicini e li scambio,
se necessario, in modo da portare a galla il più piccolo.
Quando arrivo in cima riparto dal fondo e procedo così finché ci sono scambi
da fare
Uniurb4HS
alessandrobogliolo
1BUBBLESORT
Uniurb4HS
alessandrobogliolo
2BUBBLESORT
Uniurb4HS
alessandrobogliolo
2BUBBLESORT
Uniurb4HS
alessandrobogliolo
3BUBBLESORT
Uniurb4HS
alessandrobogliolo
3BUBBLESORT
Uniurb4HS
alessandrobogliolo
4BUBBLESORT
Uniurb4HS
alessandrobogliolo
4BUBBLESORT
Uniurb4HS
alessandrobogliolo
5BUBBLESORT
Uniurb4HS
alessandrobogliolo
5BUBBLESORT
Uniurb4HS
alessandrobogliolo
6BUBBLESORT
Uniurb4HS
alessandrobogliolo
6BUBBLESORT
Uniurb4HS
alessandrobogliolo
7BUBBLESORT
Uniurb4HS
alessandrobogliolo
8BUBBLESORT
Uniurb4HS
alessandrobogliolo
8BUBBLESORT
Uniurb4HS
alessandrobogliolo
9BUBBLESORT
Uniurb4HS
alessandrobogliolo
10BUBBLESORT
Uniurb4HS
alessandrobogliolo
10BUBBLESORT
Uniurb4HS
alessandrobogliolo
11BUBBLESORT
Uniurb4HS
alessandrobogliolo
11BUBBLESORT
Uniurb4HS
alessandrobogliolo
11BUBBLESORT
Uniurb4HS
alessandrobogliolo
12BUBBLESORT
Uniurb4HS
alessandrobogliolo
12BUBBLESORT
Uniurb4HS
alessandrobogliolo
13BUBBLESORT
Uniurb4HS
alessandrobogliolo
14BUBBLESORT
Uniurb4HS
alessandrobogliolo
14BUBBLESORT
Uniurb4HS
alessandrobogliolo
15BUBBLESORT
Uniurb4HS
alessandrobogliolo
15BUBBLESORT
Uniurb4HS
alessandrobogliolo
15BUBBLESORT
Uniurb4HS
alessandrobogliolo
16BUBBLESORT
Uniurb4HS
alessandrobogliolo
17BUBBLESORT
Uniurb4HS
alessandrobogliolo
18BUBBLESORT
Uniurb4HS
alessandrobogliolo
19BUBBLESORT
Uniurb4HS
alessandrobogliolo
19BUBBLESORT
Uniurb4HS
alessandrobogliolo
20BUBBLESORT
Uniurb4HS
alessandrobogliolo
21BUBBLESORT
Uniurb4HS
alessandrobogliolo
21BUBBLESORT
Uniurb4HS
alessandrobogliolo
22BUBBLESORT
Uniurb4HS
alessandrobogliolo
22BUBBLESORT
Uniurb4HS
alessandrobogliolo
22BUBBLESORT
Uniurb4HS
alessandrobogliolo
4. MERGE SORT
Risolvo il problema in modo ricorsivo, riducendolo a due problemi di dimensione
inferiore (l’ordinamento delle due metà dell’array dato) e unendo i risultati
(merge)
Uniurb4HS
alessandrobogliolo
MERGESORT
Seconda metàPrima metà
Immaginiamo di avere qualcuno che metta in ordine per noi le due
metà dell’array. Sapremmo ricomporle per ottenere l’array ordinato?
Uniurb4HS
alessandrobogliolo
MERGESORT
Seconda metàPrima metà
Confrontiamo i primi elementi delle due metà ordinate, prendiamo il più piccolo e aggiungiamolo
all’array ordinato. Procediamo così fino ad esaurire gli elementi delle due metà.
1
Uniurb4HS
alessandrobogliolo
MERGESORT
Seconda metàPrima metà
2
Uniurb4HS
alessandrobogliolo
MERGESORT
Seconda metàPrima metà
3
Uniurb4HS
alessandrobogliolo
MERGESORT
Seconda metàPrima metà
4
Uniurb4HS
alessandrobogliolo
MERGESORT
Seconda metàPrima metà
5
Uniurb4HS
alessandrobogliolo
MERGESORT
Seconda metàPrima metà
6
Uniurb4HS
alessandrobogliolo
MERGESORT
Seconda metàPrima metà
<7
Uniurb4HS
alessandrobogliolo
MERGESORT
Ora che abbiamo visto che il merge funziona, proviamo ad applicarlo
ricorsivamente…
Livello 1
Uniurb4HS
alessandrobogliolo
MERGESORT
Ora che abbiamo visto che il merge funziona, proviamo ad applicarlo
ricorsivamente…
Livello 2
Uniurb4HS
alessandrobogliolo
MERGESORT
Ora che abbiamo visto che il merge funziona, proviamo ad applicarlo
ricorsivamente…
Livello 3
merge
Uniurb4HS
alessandrobogliolo
MERGESORT
Ora che abbiamo visto che il merge funziona, proviamo ad applicarlo
ricorsivamente…
Livello 2
merge
Uniurb4HS
alessandrobogliolo
MERGESORT
Ora che abbiamo visto che il merge funziona, proviamo ad applicarlo
ricorsivamente…
Livello 1
merge
Uniurb4HS
alessandrobogliolo
MERGESORT
𝑓 𝑛 = 𝑂(𝑛 ∙ log 𝑛 )
≤ 7 ∙ 3
Uniurb4HS
alessandrobogliolo
Indovina
A che algoritmo corrisponde questa animazione?
https://it.wikiversity.org/wiki/Il_problema_dell%27ordinamento
Uniurb4HS
alessandrobogliolo
Indovina
A che algoritmo corrisponde questa animazione?
https://it.wikiversity.org/wiki/Il_problema_dell%27ordinamento
Uniurb4HS
alessandrobogliolo
Ilsuonodegli
algoritmi
https://studio.code.org/projects/applab/wX57rfXWbUoc3zvUOGDteBAFeDXRmhclaMd4iaoiiEg

More Related Content

More from Alessandro Bogliolo

More from Alessandro Bogliolo (20)

BIBMOOC 06.01 - Buone pratiche: il caso di CSBNO - Giovanni Mojoli
BIBMOOC 06.01 - Buone pratiche: il caso di CSBNO - Giovanni MojoliBIBMOOC 06.01 - Buone pratiche: il caso di CSBNO - Giovanni Mojoli
BIBMOOC 06.01 - Buone pratiche: il caso di CSBNO - Giovanni Mojoli
 
Nuovi LIDI - Lezione 1
Nuovi LIDI - Lezione 1Nuovi LIDI - Lezione 1
Nuovi LIDI - Lezione 1
 
BIBMOOC 04.04 - Progettualità e opportunità di finanziamento - Simona Villa
BIBMOOC 04.04 - Progettualità e opportunità di finanziamento - Simona VillaBIBMOOC 04.04 - Progettualità e opportunità di finanziamento - Simona Villa
BIBMOOC 04.04 - Progettualità e opportunità di finanziamento - Simona Villa
 
BIBMOOC 04.03 - Progettare spazi per la cultura - Marco Muscogiuri
BIBMOOC 04.03 - Progettare spazi per la cultura - Marco MuscogiuriBIBMOOC 04.03 - Progettare spazi per la cultura - Marco Muscogiuri
BIBMOOC 04.03 - Progettare spazi per la cultura - Marco Muscogiuri
 
BIBMOOC 04.02 - Marketing culturale - Anna Busa
BIBMOOC 04.02 - Marketing culturale - Anna BusaBIBMOOC 04.02 - Marketing culturale - Anna Busa
BIBMOOC 04.02 - Marketing culturale - Anna Busa
 
BIBMOOC 3.2 - Coding unplugged fai-da-te
BIBMOOC 3.2 - Coding unplugged fai-da-teBIBMOOC 3.2 - Coding unplugged fai-da-te
BIBMOOC 3.2 - Coding unplugged fai-da-te
 
BIBMOOC 03.01 - Programmazione visuale a blocchi
BIBMOOC 03.01 - Programmazione visuale a blocchiBIBMOOC 03.01 - Programmazione visuale a blocchi
BIBMOOC 03.01 - Programmazione visuale a blocchi
 
BIBMOOC 02.01 - Esecutore ideale e istruzioni elementari
BIBMOOC 02.01 - Esecutore ideale e istruzioni elementariBIBMOOC 02.01 - Esecutore ideale e istruzioni elementari
BIBMOOC 02.01 - Esecutore ideale e istruzioni elementari
 
BIBMOOC 02.02 - Sequenze di istruzioni ripetizione e condizioni
BIBMOOC 02.02 - Sequenze di istruzioni ripetizione e condizioniBIBMOOC 02.02 - Sequenze di istruzioni ripetizione e condizioni
BIBMOOC 02.02 - Sequenze di istruzioni ripetizione e condizioni
 
BIBMOOC 01.03 - Le biblioteche e la loro funzione sociale - Chiara Faggiolani
BIBMOOC 01.03 - Le biblioteche e la loro funzione sociale - Chiara FaggiolaniBIBMOOC 01.03 - Le biblioteche e la loro funzione sociale - Chiara Faggiolani
BIBMOOC 01.03 - Le biblioteche e la loro funzione sociale - Chiara Faggiolani
 
BIBMOOC 1.2 - Coding e pensiero computazionale
BIBMOOC 1.2 - Coding e pensiero computazionaleBIBMOOC 1.2 - Coding e pensiero computazionale
BIBMOOC 1.2 - Coding e pensiero computazionale
 
BIBMOOC 1.1 - Informazione e rappresentazioni digitali
BIBMOOC 1.1 - Informazione e rappresentazioni digitaliBIBMOOC 1.1 - Informazione e rappresentazioni digitali
BIBMOOC 1.1 - Informazione e rappresentazioni digitali
 
CodyTrip a BTO2021
CodyTrip a BTO2021CodyTrip a BTO2021
CodyTrip a BTO2021
 
AIMOOC 7.3 - Per una IA etica - Claudia Chiavarino
AIMOOC 7.3 - Per una IA etica - Claudia ChiavarinoAIMOOC 7.3 - Per una IA etica - Claudia Chiavarino
AIMOOC 7.3 - Per una IA etica - Claudia Chiavarino
 
AIMOOC 7.2 - La strategia europea per l'I.A. - Lucilla Sioli
AIMOOC 7.2 - La strategia europea per l'I.A. - Lucilla SioliAIMOOC 7.2 - La strategia europea per l'I.A. - Lucilla Sioli
AIMOOC 7.2 - La strategia europea per l'I.A. - Lucilla Sioli
 
AIMOOC 5.5 - Programmazione o addestramento? - Alessandro Bogliolo
AIMOOC 5.5 - Programmazione o addestramento? - Alessandro BoglioloAIMOOC 5.5 - Programmazione o addestramento? - Alessandro Bogliolo
AIMOOC 5.5 - Programmazione o addestramento? - Alessandro Bogliolo
 
AIMOOC 1.5 - La coscienza - Mario Rosanova
AIMOOC 1.5 - La coscienza - Mario RosanovaAIMOOC 1.5 - La coscienza - Mario Rosanova
AIMOOC 1.5 - La coscienza - Mario Rosanova
 
AIMOOC 5.4 - L'intelligenza della forza bruta - Alessandro Bogliolo
AIMOOC 5.4 - L'intelligenza della forza bruta - Alessandro BoglioloAIMOOC 5.4 - L'intelligenza della forza bruta - Alessandro Bogliolo
AIMOOC 5.4 - L'intelligenza della forza bruta - Alessandro Bogliolo
 
AIMOOC 5.3 - Il libero arbitrio dell'esecutore ideale - Alessandro Bogliolo
AIMOOC 5.3 - Il libero arbitrio dell'esecutore ideale - Alessandro BoglioloAIMOOC 5.3 - Il libero arbitrio dell'esecutore ideale - Alessandro Bogliolo
AIMOOC 5.3 - Il libero arbitrio dell'esecutore ideale - Alessandro Bogliolo
 
AIMOOC 4.3 - Conoscenza e comunicazione fra neuroni - Stefano Sartini
AIMOOC 4.3 - Conoscenza e comunicazione fra neuroni - Stefano SartiniAIMOOC 4.3 - Conoscenza e comunicazione fra neuroni - Stefano Sartini
AIMOOC 4.3 - Conoscenza e comunicazione fra neuroni - Stefano Sartini
 

Recently uploaded

Recently uploaded (11)

Transizione Energetica e Cooperazione: non solo CER
Transizione Energetica e Cooperazione: non solo CERTransizione Energetica e Cooperazione: non solo CER
Transizione Energetica e Cooperazione: non solo CER
 
AccessibleEU: oggi per l’accessibilità di domani
AccessibleEU: oggi per l’accessibilità di domaniAccessibleEU: oggi per l’accessibilità di domani
AccessibleEU: oggi per l’accessibilità di domani
 
Lo Schema Diapositiva con LibreOffice Impress
Lo Schema Diapositiva con LibreOffice ImpressLo Schema Diapositiva con LibreOffice Impress
Lo Schema Diapositiva con LibreOffice Impress
 
Powerpoint tesi di laurea
Powerpoint tesi di laurea Powerpoint tesi di laurea
Powerpoint tesi di laurea
 
Stati Uniti PPT geografia power point..
Stati Uniti  PPT geografia power point..Stati Uniti  PPT geografia power point..
Stati Uniti PPT geografia power point..
 
Ticonzero news 149.pdf, maggio 2024, content
Ticonzero news 149.pdf, maggio 2024, contentTiconzero news 149.pdf, maggio 2024, content
Ticonzero news 149.pdf, maggio 2024, content
 
MyEdu Club: il magazine di MyEdu dedicato ai genitori
MyEdu Club: il magazine di MyEdu dedicato ai genitoriMyEdu Club: il magazine di MyEdu dedicato ai genitori
MyEdu Club: il magazine di MyEdu dedicato ai genitori
 
a scuola di biblioVerifica: come utilizzare CHATBOT secondo UNESCO
a scuola di biblioVerifica: come utilizzare CHATBOT secondo UNESCOa scuola di biblioVerifica: come utilizzare CHATBOT secondo UNESCO
a scuola di biblioVerifica: come utilizzare CHATBOT secondo UNESCO
 
Ostia antica da porta di Roma a porta d'Europa
Ostia antica da porta di Roma a porta d'EuropaOstia antica da porta di Roma a porta d'Europa
Ostia antica da porta di Roma a porta d'Europa
 
Accessibilità, tra miti e realtà: gli errori da non compiere e le azioni da i...
Accessibilità, tra miti e realtà: gli errori da non compiere e le azioni da i...Accessibilità, tra miti e realtà: gli errori da non compiere e le azioni da i...
Accessibilità, tra miti e realtà: gli errori da non compiere e le azioni da i...
 
No. Nessuno strumento automatico verifica o ripara l’accessibilità di un sito...
No. Nessuno strumento automatico verifica o ripara l’accessibilità di un sito...No. Nessuno strumento automatico verifica o ripara l’accessibilità di un sito...
No. Nessuno strumento automatico verifica o ripara l’accessibilità di un sito...
 

Uniurb4HS 0102 - Algoritmi intuitivi - Mettiamo in ordine