16.07.2014 Views

Numero 16 Aprile 2008 - Retrocomputing.net

Numero 16 Aprile 2008 - Retrocomputing.net

Numero 16 Aprile 2008 - Retrocomputing.net

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!