Programmazione Avanzata Java e C 12/01/2015 0.12 Lezione 28: Algoritmi di ordinamento.

Slides:



Advertisements
Presentazioni simili
Algoritmi di ordinamento
Advertisements

Algoritmi e Strutture Dati
Tecniche e Linguaggi di Programmazione
Elementi di complessità
Problema dellordinamento Input: Sequenza di n numeri Output: Permutazione π = tale che: a 1 a 2 …… a n Subroutine in molti problemi E possibile effettuare.
INFORMATICA Algoritmi fondamentali
Tempo di computazione (Running Time) di programmi Misure del tempo: Misure del tempo: metodi principali 1.Benchmarking 2.Analisi.
Analisi della complessità degli algoritmi
Analisi della complessità degli algoritmi
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Fisica 2 Elettrostatica
Lez. 51 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Complessita'
Corso di Informatica grafica 1 Introduzione Quando si rappresentano modelli di oggetti 3D costituiti da facce poligonali secondo delle proiezioni alcune.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Ordinamento di una lista: bubble-sort
1 2. Analisi degli Algoritmi. 2 Algoritmi e strutture dati - Definizioni Struttura dati: organizzazione sistematica dei dati e del loro accesso Algoritmo:
Algoritmi e Strutture Dati III. Algoritmi di Ordinamento
1 Informazioni generali r Stefano Leonardi m Tel.: m URL: / r Ricevimento:
1 Informazioni generali r Luca Becchetti m Tel.: m URL: r Ricevimento: m Latina:
Algoritmi di ordinamento
Introduzione1 Algoritmi e strutture dati - Definizioni Struttura dati: organizzazione sistematica dei dati e del loro accesso Algoritmo: procedura suddivisa.
Linguaggio di programmazione C (Introduzione alla programmazione)
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente) ITERAZIONE: ripetere piu volte una sequenza di operazioni istruzioni: for, while, do.
Tempo di computazione (Running Time) di programmi Misure del tempo: Misure del tempo: metodi principali 1.Benchmarking 2.Analisi Benchmarking: usato per.
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
AN Fondam98 Sorting Ricerca in un vettore ordinato.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
ALGORITMI E COMPLESSITÀ
Algoritmi e Strutture Dati 8 crediti Calendario: 1 Ott. – 6 Dic. Aula: LuM250 Orario: Lun, Mar, Mer, Gio Giorni di lezione disponibili 40 ~48.
Elementi di Informatica di base
I Metodi in Java Il termine "metodo" è sinonimo di "azione". Quindi, affinché un programma esegua qualche istruzione, deve contenere metodi.
23 aprile 2002 Algoritmi e strutture dati1 Informazioni generali Fabrizio d'Amore o Tel.: o o URL:

Fondamenti di Informatica e Informatica di base Prof.ssa Elisa Tiezzi
Programma di Informatica Classi Seconde
Algoritmi e Strutture dati a.a. 2013/2014 Informazioni sul corso
Algoritmi e Strutture dati a.a. 2012/2013 Informazioni sul corso Dr Maria Federico.
ALGORITMI a.
Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi. Un problema risolvibile mediante un algoritmo.
Algoritmi di Ordinamento
Algoritmi CHE COS’è UN ALGORITMO di ORDINAMENTO?
A LGORITMI DI ORDINAMENTO Cinzia Reverberi. COS’È UN ALGORITMO? Un algoritmo è un insieme ben ordinato di operazioni non ambigue ed effettivamente calcolabili.
Definizione di un algoritmo
ALGORITMI Un algoritmo è un insieme di istruzioni: -ordinate -non ambigue -effettivamente computabili.
Alberi CORDA – Informatica A. Ferrari Testi da
Complessità del problema Se non facciamo ipotesi sul tipo degli elementi della sequenza le uniche operazioni permesse sono confronti e assegnazioni. Problema.
Di Parola Umberto e Pani Lara. Aritmetica di macchina Numeri di macchina Operazioni di macchina.
Ordinamento1 Algoritmi di ordinamento  Selection Sort  Quick Sort  Lower bound alla complessità degli algoritmi di ordinamento.
ALGORITMO Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi. Un formalismo che permette di rappresentare.
GLI ALGORITMI VISIBILE SUL BLOG INFORMATICA ANNO SCOLASTICO 2013 / 2014 GABRIELE SCARICA 2°T.
SCHEDA INFORMATIVA DI UNITÀ. Introduzione Esigenze di memoria per un sistema di calcolo –Dati –Istruzioni Obiettivi –Raggiungere i migliori compromessi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Definizione di algoritmo: Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi. Un problema risolvibile.
Soluzione 6: Algoritmo Quicksort
Informatica Lezione 3 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
Calcolatori Elettronici Valutazione delle Prestazioni Francesco Lo Presti Rielaborate da Salvatore Tucci.
Esempi domande primo compitino Claudia Raibulet
Scrivere e compilare programmi
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Esercitazione sull’ ordinamento 20 maggio 2003
Problema dell’Ordinamento. Problema dell’ordinamento Formulazione del problema –Si vuole ordinare una lista di elementi secondo una data proprietà P Esempio:
GLI ALGORITMI DI ORDINAMENTO
L’ALGORITMO Un algoritmo è un procedimento formale che risolve un determinato problema attraverso un numero finito di passi. Un problema risolvibile mediante.

Transcript della presentazione:

Programmazione Avanzata Java e C 12/01/ Lezione 28: Algoritmi di ordinamento

12/01/ Lezione 142 Algoritmi di ordinamento  Selection sort Selection sort  Bubble sort Bubble sort  Insertion sort Insertion sort  Quick sort Quick sort Siti su internet:

12/01/ Lezione 143 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. l Tempo di calcolo occorrente (complessità temporale) l 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

12/01/ Lezione 144 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.

12/01/ Lezione 145 esempio  Tempo di calcolo proporzionale a: l 1 per azzerare il primo elemento di un vettore di N elementi l N per sommare 1 a tutti gli elementi di un vettore di N elementi l N 2 per eseguire due cicli for intrecciati for(i=0; i<N; i++) for(j=0; j<N; j++) … l Log 2 N ad ogni iterazione la dimensione del vettore da considerare si dimezza

12/01/ Lezione 146 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.

12/01/ Lezione 147 Considerazioni sugli algoritmi di ordinamento  Bubble sort l effettua all’incirca N 2 /2 confronti ed N 2 /2 scambi, sia in media che nel caso peggiore  Selection sort l effettua all’incirca N 2 /2 confronti ed N scambi l 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

12/01/ Lezione 148  Insertion sort l effettua in media N 2 /4 confronti ed N 2 /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 l effettua in media 2NlogN confronti ed NlogN scambi, esegue N 2 /2 confronti nel caso peggiore, con sempre circa NlogN scambi l (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à) Considerazioni sugli algoritmi di ordinamento

12/01/ Lezione 149 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 sort2,99 s  Insertion sort1.94 s  Quick sort0.01 s