Numero 16 Aprile 2008 - Retrocomputing.net
Numero 16 Aprile 2008 - Retrocomputing.net
Numero 16 Aprile 2008 - Retrocomputing.net
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Jurassic News - Anno 3 - numero <strong>16</strong> - <strong>Aprile</strong> <strong>2008</strong><br />
to “descrescente” 120<br />
rispetto alla retta<br />
lineare. Ad esempio<br />
100<br />
un algoritmo<br />
con complessità<br />
log(N) è buo-<br />
80<br />
N<br />
O(2)<br />
no, come anche<br />
O(2)/2<br />
O(N 1/2 60<br />
).<br />
O(N)*Ln(N)<br />
Ln(N)<br />
La ricerca di un algoritmo<br />
efficiente,<br />
40<br />
2n<br />
cioè che consumi<br />
meno tempo possibile<br />
20<br />
per essere<br />
portato a termine, 0<br />
è uno degli aspetti<br />
principe nella ricerca<br />
1 2 3 4 5 6 7 8 9 10<br />
algoritmica.<br />
sa da quello da ordinare. In pratica Un esempio grafico per<br />
comprendere il differente<br />
Altri principi sono la correttezza e abbiamo bisogno di un vettore risultato<br />
della stessa dimensione di goritmi al crescere di N.<br />
comportamento degli al-<br />
l’ottimizzazione delle risorse diverse<br />
dal tempo.<br />
quello originale.<br />
Sia [3, 2, 4, 1, 5] il vettore da ordinare<br />
e sia inizialmente vuoto il vettore<br />
Selection Sort<br />
ordinato:<br />
[0, 0, 0, 0, 0]<br />
Come dice il nome questo algoritmo<br />
fa suo il principio di selezione<br />
dell’elemento minore scelto fra<br />
quelli da ordinare. Una volta individuato<br />
tale elemento esso va a<br />
posizionarsi nella posizione che gli<br />
compete all’interno di un vettore<br />
ordinato.<br />
Questo algoritmo è l’esatta trasposizione<br />
di quello che faremmo<br />
dovendoci trovare a scegliere degli<br />
oggetti da un insieme per metterli<br />
nell’ordine di grandezza in un’altro<br />
contenitore.<br />
E’ semplicissimo illustrarne il funzionamento<br />
se si assume che il<br />
vettore ordinato sia un’area diver-<br />
prima iterazione:<br />
viene scelto l’elemento che vale<br />
1 e spostato nella prima posizione<br />
del vettore ordinato:<br />
[1, 0, 0, 0, 0]<br />
L’elemento 1 non fa più parte del<br />
vettore da ordinare che ora è:<br />
[3, 2, 4, 99, 5]<br />
Si vede che al posto dell’elemento<br />
estratto dal vettore di partenza<br />
è stato posto un numero “grande”<br />
che si assume faccia la funzione di<br />
“posto vuoto”.<br />
Ora vien scelto il 2:<br />
41