2. Che
cos’è
un
algoritmo?
A . S . 2 0 2 2 / 2 0 2 3 2
Il concetto di algoritmo ha origini millenarie,
ma il suo potenziale si è scatenato quando ha
incontrato l'informatica e l'automazione.
Un algoritmo è un insieme finito di istruzioni
che, dato un insieme di condizioni iniziali, può
essere eseguito secondo una sequenza prescritta
per raggiungere un determinato obiettivo e che
ha un insieme riconoscibile di condizioni finali.
V E S C E , T O S K A , G I Z A W , I E Z Z I
3. Gli algoritmi
di tipo sort
Questi algoritmi sono una serie
di istruzioni che prendono come
input un array o una lista e ne
riordina gli elementi seguendo
un preciso ordine. I più comuni
sono: Selection sort, Bubble
sort e Insertion sort
A . S . 2 0 2 2 / 2 0 2 3
V E S C E , T O S K A , G I Z AW , I E Z Z I 3
4. A . S . 2 0 2 2 / 2 0 2 3
L’algoritmo lavora dividendo in due
sotto vettori il vettore da ordinare:
il primo è ordinato (parte bassa del
vettore) il secondo è disordinato
(parte alta del vettore). La strategia
è quella di individuare nel sotto
vettore disordinato il minimo
rispetto alla posizione che si deve
ordinare, cioè la prima cella del
vettore disordinato.
V E S C E , T O S K A , G I Z A W , I E Z Z I 4
In cosa consiste il
selection sort?
5. A . S . 2 0 2 2 / 2 0 2 3
All’inizio esisterà il solo sotto vettore
disordinato, si parte con un indice i=0
che rappresenta il primo elemento in
cui si deve inserire il valore minimo
tra il valore presente nella cella i=0 e
i valori presenti nel sotto vettore che
va da j=i+1 a n-1. Per fare questo
occorrono pertanto due cicli:
1. l primo ciclo, quello sull’indice i,
parte da zero e si ferma a n-2 (cioè
i < n-1), in cui l’elemento in
posizione i rappresenta la posizione
da ordinare.
2. il secondo ciclo serve a determinare
la posizione del minimo e parte da
j=i+1 e si ferma a n-1 (cioè j<n).
V E S C E , T O S K A , G I Z A W , I E Z Z I 5
Come funziona
6. A . S . 2 0 2 2 / 2 0 2 3
A differenza degli altri
algoritmi di tipo sort, il
tempo di esecuzione di
questo algoritmo non dipende
dall’input, bensì dalla
dimensione dell’array
V E S C E , T O S K A , G I Z A W , I E Z Z I 6
La sua complessità
computazionale
Per calcolare la complessità osserviamo che si
devono sommare tutte le iterazioni fatte, cioè
1 + 2 + 3 + … + n-3 + n-2 + n-1
Ma ricordando che la somma dei
primi n numeri naturali è n*(n+1)/2, cioè
1 + 2 + 3 + … n-3 + n-2 + n-1 + n = n*(n+1)/2
Dovendo calcolare la somma fino al termine n-
1, portando la n al secondo membro si ricava
che
1 + 2 + 3 + … n-3 + n-2 + n-1 = n*(n+1)/2 – n =
n*(n-1)/2
Quindi la complessità è O(n^2)
7. A . S . 2 0 2 2 / 2 0 2 3 V E S C E , T O S K A , G I Z A W , I E Z Z I 7
La sua
particolarità
Assieme all’insertion sort e al bubble
sort, il selection sort è un algoritmo
di tipo quadratico, ma a differenza
degli altri in quest’ultimo il caso
ottimo e il caso peggiore coincidono,
la sua complessità è infatti sempre
O(n^2)
8. 0 5 / 0 8 / 2 0 X X V E S C E , T O S K A , G I Z A W , I E Z Z I 8
Grazie per
l’attenzione.