1 / 9

Lezione 28: Algoritmi di ordinamento

Lezione 28: Algoritmi di ordinamento. Algoritmi di ordinamento. Selection sort Bubble sort Insertion sort Quick sort. http://it.wikipedia.org/wiki/File:Sorting_quicksort_anim.gif. Siti su internet: http://people.cs.ubc.ca/~harrison/Java/sorting-demo.html

xiu
Download Presentation

Lezione 28: Algoritmi di ordinamento

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lezione 28: Algoritmi di ordinamento

  2. Algoritmi di ordinamento • Selection sort • Bubble sort • Insertion sort • Quick sort http://it.wikipedia.org/wiki/File:Sorting_quicksort_anim.gif Siti su internet: http://people.cs.ubc.ca/~harrison/Java/sorting-demo.html http://www.sorting-algorithms.com/ Lezione 14

  3. Altre considerazioni sugli algoritmi • Per qualunque problema computabile esistono infiniti algoritmi risolutivi • Complessità computazionale degli algoritmi • Il costo può essere valutato in relazione a diversi parametri, ad es. • Tempo di calcolo occorrente (complessità temporale) • Occupazione di memoria (complessità spaziale) • Ottimizzare rispetto a un parametro in genere significa spendere rispetto ad un altro • La rapidità di calcolo è sempre un fattore importantissimo nella determinazione della bontà di un algoritmo Lezione 14

  4. Tempo di calcolo • Ogni algoritmo è caratterizzato da un suo tempo di calcolo che determina il tempo necessario affinché tale algoritmo venga completamente eseguito. • Le prestazioni di un algoritmo sono in qualche modo proporzionali alla quantità di dati da elaborare e quindi alla quantità di istruzioni da eseguire • Il numero di istruzioni da eseguire non fornisce sempre un’indicazione utile, è un buon metodo di valutazione ma approssimativo e non assoluto. Lezione 14

  5. esempio • Tempo di calcolo proporzionale a: • 1 per azzerare il primo elemento di un vettore di N elementi • N per sommare 1 a tutti gli elementi di un vettore di N elementi • N2 per eseguire due cicli for intrecciati for(i=0; i<N; i++) for(j=0; j<N; j++) … • Log2N ad ogni iterazione la dimensione del vettore da considerare si dimezza Lezione 14

  6. Ad esempio: • Insertion sort usa la minima quantità di memoria indispensabile, ma è lento • Quicksort è veloce, ma usa molta più memoria. Perché? • Perché, essendo ricorsivo, occorre creare molte istanze della funzione. Se le cose non sono fatte bene può addirittura “esplodere” e richiedere una profondità di ricorsione pari al numero di elementi del vettore. Lezione 14

  7. Considerazioni sugli algoritmi di ordinamento • Bubble sort • effettua all’incirca N2/2 confronti ed N2/2 scambi, sia in media che nel caso peggiore • Selection sort • effettua all’incirca N2/2 confronti ed N scambi • per ogni i da 1 a N -1 c’è uno scambio ed N-i confronti per un totale di N-1 scambi e (N-1)+(N-2) +…+2+1=N(N-1)/2 indipendentemente dai dati in ingresso. L’aggiornamento della variabile min dipende dai dati in ingresso nel caso peggiore il numero è quadratico, mediamente NlogN Lezione 14

  8. Considerazioni sugli algoritmi di ordinamento • Insertion sort • effettua in media N2/4 confronti ed N2/4 spostamenti (mezzi scambi), il doppio nel caso peggiore. La complessità diventa lineare nel caso di vettore quasi ordinato. Se il vettore è già ordinato non vengono effettuati scambi e il numero di confronti è pari agli elementi del vettore stesso • Quick sort • effettua in media 2NlogN confronti ed NlogN scambi, esegue N2/2 confronti nel caso peggiore, con sempre circa NlogN scambi • (se si esegue l’algoritmo su un vettore di N elementi già ordinato, l’algoritmo richiamerà se stesso N volte con vettori di dimensioni decrescenti di un’unità) Lezione 14

  9. Tempi di esecuzione: esempio • Tempi di ordinamento di un vettore contenente tutte le parole • del file DIVINA_COMMEDIA.TXT: • Bubble sort 7,62 s • Bubble sort ottimizzato 7,51 s • Selection sort 2,99 s • Insertion sort 1.94 s • Quick sort 0.01 s Lezione 14

More Related