Ordinamento di una lista: bubble-sort

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Ordinamento di una lista: bubble-sort"

Transcript

1 Ordinamento di una lista: bubble-sort L idea è di far galleggiare il minimo della lista nelle prima posizione Riduco la parte di lista da considerare, escludendo le prime posizioni già ordinate

2 Ordinamento: bubble-sort Passo 1: parto dalla fine dell array e scambio il valore di due elementi se quello con l indice più alto è minore dell altro. Prova(1) Prova(2) Prova(3) Prova(4) Prova(5) Prova(1) Prova(2) Prova(3) Prova(4) Prova(5) Prova(1) Prova(2) Prova(3) Prova(4) Prova(5)

3 Ordinamento: bubble-sort Passo 2: riduco l array da considerare per l ordinamento e ripeto il passo 1 Prova(1) Prova(2) Prova(3) Prova(4) Prova(5) Parte ordinata Prova(1) Prova(2) Prova(3) Prova(4) Prova(5) Prova(1) Prova(2) Prova(3) Prova(4) Prova(5)

4 Ordinamento: bubble-sort Passo 3: riduco l array da considerare per l ordinamento e ripeto il passo 1 Prova(1) Prova(2) Prova(3) Prova(4) Prova(5) Parte ordinata Prova(1) Prova(2) Prova(3) Prova(4) Prova(5)

5 Selection sort in Matlab Incremento la dimensione della parte ordinata: ad ogni iterazione del ciclo di i la parte disordinata parte da un indice più grande Col ciclo di j scorro la parte disordinata dalla fine del vettore fino all indice i Vengono confrontati i valori adiacenti. Se sono in ordine sbagliato vengono scambiati di posto function xout=bubblesort(xin); xout=xin; n=length(xout); for i=2:n-1, for j=n:-1:i if(xout(j) < xout(j-1)), tmp=xout(j-1); xout(j-1)=xout(j); xout(j)=tmp; end; end; end; return;

6 Attributi degli algoritmi: correttezza La prima caratteristica di un algoritmo è la correttezza, cioè deve fornire una soluzione corretta del problema e terminate. Riduco la parte di lista da considerare, escludendo le prime posizioni già ordinate

7 Attributi degli algoritmi: efficienza Tempo e spazio di memoria sono risorse limitate di un calcolatore, per cui dovendo scegliere fra due algoritmi corretti, si preferirà quello che usa meno risorse. L efficienza di un algoritmo indica quanto parsimoniosamente esso utilizza le risorse a disposizioene

8 Notazione o(), O(), Θ() Per quantificare l efficienza di un algoritmo al variare della numerosità dei dati su cui agisce si usa cercare di esprimere la sua complessità computazionale in termini di funzioni della numerosità dei dati n che fungano da limite inferiore, limite superiore, o di un andamento asintotico.

9 Limite inferiore: o() Si dice che una funzione f(n) è o piccolo di una funzione g(n), scrivendo f(n)=o(g(n)),se: n, M : n > n M g( n) f ( n) 0 0 f(n) g(n) n 0 n

10 Limite superiore: O() Si dice che una funzione f(n) è o grande di una funzione g(n), scrivendo f(n)=o(g(n)),se: n, M : n > n f ( n) M g( n) 0 0 f(n) g(n) n 0 n

11 Andamento asintotico: Θ() Si dice che una funzione f(n) è theta grande di una funzione g(n), scrivendo f(n)=θ(g(n)),se la funzione f(n) è contemporaneamente o(g(n)) ed O(g(n)): f(n) g(n) n 0 n

12 Selection-sort: efficienza 1) Seleziona l elemento più piccolo nell array 2) Scambia l elemento selezionato con il primo 3) Ordina la parte restante dell array, cioè riduco la parte di array da considerare, escludendo le prime posizioni già ordinate

13 Selection-sort: efficienza 1) Per selezionare l elemento più piccolo di un array devo analizzare tutti gli elementi di un array, e quindi è un operazione che implica n operazioni

14 Selection-sort: efficienza 2) Lo scambio di un elemento con un altro viene fatto in tempo costante indipendente dalla dimensione dell array

15 Selection-sort: efficienza 3) La parte disordinata dell array si riduce di un elemento e ripeto la procedura.

16 Selection-sort: efficienza 1) Al primo passo devo trovare il minimo su un array disordinato di n elementi 2) Al secondo passo devo trovare il minimo su un array disordinato di n-1 elementi 3) Al terzo passo devo trovare il minimo su un array disordinato di n-2 elementi 4).

17 Selection-sort: efficienza Per completare l argomento bisogna sommare la complessità computazionale di tutti i passi: n+(n-1)+(n-2) n i= 1 n( n 1) n n ( n i) = = = O( n )

18 Bubble-sort: efficienza L idea è di far galleggiare il minimo della lista nelle prima posizione Riduco la parte di lista da considerare, escludendo le prime posizioni già ordinate

19 Bubble-sort: efficienza In maniera del tutto analoga a selectio-sort, la parte disordinata dell array si riduce di un solo elemento ad ogni passo, e tutti gli elementi della parte disordinata devono essere analizzati

20 Bubble sort: efficienza Come per selection sort bisogna sommare la complessità computazionale di tutti i passi: n+(n-1)+(n-2) n i= 1 n( n 1) n n ( n i) = = = O( n )

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento

Dettagli

Tecniche di Ordinamento dei Vettori

Tecniche di Ordinamento dei Vettori Tecniche di Ordinamento dei Vettori Corso di Laurea Ingegneria Corso B A.A. 2010-2011 1 Contenuto 1) Generalità 2) Metodi a Minimo Ingombro di Memoria 2.1) Ordinamento per selezione ( Selection Sort )

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Analisi di algoritmi Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno Parte I Analisi

Dettagli

Ordinamento di una lista: bubble-sort

Ordinamento di una lista: bubble-sort Python Ordinamento di una lista: bubble-sort L idea è di far galleggiare il minimo della lista nelle prima posizione Riduco la parte di lista da considerare, escludendo le prime posizioni già ordinate

Dettagli

Liceo B.Russell Classe 2 I VETTORI. ORDINAMENTO DI UN VETTORE: Metodo ingenuo o sequenziale

Liceo B.Russell Classe 2 I VETTORI. ORDINAMENTO DI UN VETTORE: Metodo ingenuo o sequenziale Fondamenti: I VETTORI Riempimento di un vettore con numeri acquisiti da tastiera; Riempimento di un vettore lungo N con i numeri da 0 a N; Riempimento di un vettore lungo N con i numeri da N a 0; Riempimento

Dettagli

Calcolo Parallelo e Distribuito

Calcolo Parallelo e Distribuito Calcolo Parallelo e Distribuito 1 Problema Progettare un algoritmo parallelo per l ordinamento di un vettore su un calcolatore MIMD a memoria distribuita con p processori Sorting Bitonico A. Murli Calcolo

Dettagli

Calcolo Parallelo e Distribuito

Calcolo Parallelo e Distribuito Calcolo Parallelo e Distribuito 1 Problema Progettare un algoritmo parallelo per l ordinamento di un vettore su un calcolatore MIMD a memoria distribuita con p processori Sorting Bitonico A. Murli Calcolo

Dettagli

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore

Dettagli

Algoritmi di Ricerca Ordinamento

Algoritmi di Ricerca Ordinamento Algoritmi di Ricerca e Ordinamento Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Appunti Di Informatica Prof. Accarino 1 Algoritmi classici In ambito informatico alcuni problemi si presentano

Dettagli

Ω (grande omega) Esempio 10 COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

Ω (grande omega) Esempio 10 COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.2006/07 Prof. V.L. Plantamura Dott.ssa A. Angelini Esempio 10 int potenza(int base, int esp); main () { \* Genera le prime potenze

Dettagli

Corso di Tecniche di Programmazione

Corso di Tecniche di Programmazione Problema: Data una sequenza di elementi in ordine qualsiasi, ordinarla. Corso di Tecniche di Programmazione Corsi di Laurea in Ingegneria Informatica ed Automatica Anno Accedemico 003/004 Proff. Giuseppe

Dettagli

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio Appunti di informatica Lezione 10 anno accademico 2016-2017 Mario Verdicchio Esercizio Scrivere un programma che, data una sequenza di 10 interi (scelta dall utente), la ordini in ordine crescente Soluzione

Dettagli

Lezione 4 Ugo Vaccaro

Lezione 4 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2017 2018 Lezione 4 Ugo Vaccaro Introduciamo ora la notazione Ω, che ci sarà utile quando vorremo valutare limitazioni inferiori al tempo di esecuzione di algoritmi

Dettagli

PASCAL: I VETTORI TRATTO DA CAMAGNI-NIKOLASSY, CORSO DI INFORMATICA, VOL. 1, HOEPLI. Informatica

PASCAL: I VETTORI TRATTO DA CAMAGNI-NIKOLASSY, CORSO DI INFORMATICA, VOL. 1, HOEPLI. Informatica PASCAL: I VETTORI TRATTO DA CAMAGNI-NIKOLASSY, CORSO DI INFORMATICA, VOL. 1, HOEPLI Informatica I dati strutturati: gli array I vettori (o Array) Fino a ora abbiamo memorizzato le informazioni (valori)

Dettagli

Tempo e spazio di calcolo

Tempo e spazio di calcolo Tempo e spazio di calcolo Modelli di calcolo e metodologie di analisi F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04) In quale modo stimiamo il tempo di calcolo? Possiamo considerare

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Gli algoritmi di base sul tipo array: ordinamento e ricerca Claudio De Stefano - Corso di Fondamenti di Informatica 1 Algoritmi di ordinamento gli algoritmi si differenziano

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Algoritmi di ordinamento Gli ordinamenti interni sono fatti su sequenze in memoria centrale Fondamenti di Informatica 18. Algoritmi di ordinamento in C++ Gli ordinamenti esterni sono fatti su sequenze

Dettagli

A lezione sono stati presentati i seguenti passi per risolvere un problema:

A lezione sono stati presentati i seguenti passi per risolvere un problema: Calcolo delle radici di un polinomio Problema: Dati i coefficienti a,b,c di un polinomio di 2 grado della forma: ax^2 + bx + c = 0, calcolare le radici. A lezione sono stati presentati i seguenti passi

Dettagli

Strutture dati e algoritmi. Sommario

Strutture dati e algoritmi. Sommario Sommario Strutture dati e algoritmi: Ricerca (lineare e binaria) Ordinamento (per selezione) Strutture dati e algoritmi Come esempi concreti di applicazioni in C++ si useranno le strutture dati e gli algoritmi.

Dettagli

Primo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale

Primo allenamento. Olimpiadi Italiane di Informatica - Selezione territoriale Primo allenamento Olimpiadi Italiane di Informatica - Selezione territoriale Luca Chiodini [email protected] - [email protected] 10 marzo 2016 Programma 1. Lettura di un problema tratto dalle

Dettagli

Studio degli algoritmi

Studio degli algoritmi COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.2006/07 Prof. V.L. Plantamura Dott.ssa A. Angelini Studio degli algoritmi Dato un problema P, le problematiche riguardano: Sintesi

Dettagli

Sommario. Ordinamento. Selection Sort Bubble Sort/ Shaker Sort Shell Sort

Sommario. Ordinamento. Selection Sort Bubble Sort/ Shaker Sort Shell Sort Ordinamento Sommario Ordinamento Selection Sort Bubble Sort/ Shaker Sort Shell Sort Cosa e' l'ordinamento Il problema consiste nell elaborare insiemi di dati costituiti da record I record hanno sono costituiti

Dettagli

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. E. Calabrese: Fondamenti di Informatica Algoritmi-1 Algoritmi di ricerca Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. Per esempio: - cercare

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Analisi Asintotica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Un graduale processo di astrazione Passo 1: abbiamo ignorato il costo effettivo

Dettagli

Esercizi per il corso di Algoritmi

Esercizi per il corso di Algoritmi 1 Esercizi per il corso di Algoritmi Esercizi sulle Notazioni Asintotiche 1. Esercizio: In ciascuno dei seguenti casi, indicare se f(n) = O(g(n)), o se f(n) = Ω(g(n)), oppure entrambi (nel cui caso occorre

Dettagli

Corso di Fondamenti di Informatica e Laboratorio

Corso di Fondamenti di Informatica e Laboratorio Corso di Fondamenti di Informatica e Laboratorio Corsi di Laurea Ingegneria Informatica (O-Z) Corsi di Laurea Ingegneria delle Telecomunicazioni - (A-Z) (ordinamento 03) A.A. 2009-2010 Prof. Giuseppe Mangioni

Dettagli

ALGORITMI DI ORDINAMENTO ALGORITMI DI ORDINAMENTO

ALGORITMI DI ORDINAMENTO ALGORITMI DI ORDINAMENTO ALGORITMI DI ORDINAMENTO Scopo: ordinare una sequenza di elementi in base a una certa relazione d ordine lo scopo finale è ben definito algoritmi equivalenti diversi algoritmi possono avere efficienza

Dettagli

Soluzione di Equazioni non lineari

Soluzione di Equazioni non lineari Soluzione di Equazioni non lineari Corso di Calcolo Numerico 20 Marzo 2018 Function in MATLAB Lo scopo di una funzione è quello di prendere in input un certo numero di valori, fare alcune operazioni con

Dettagli

Algoritmi di ordinamento

Algoritmi di ordinamento Algoritmi di ordinamento! Selection Sort! Quick Sort! Lower bound alla complessità degli algoritmi di ordinamento Ordinamento 1 Selection Sort SelectionSort(dati[]) { for (i=0; idati.length-1; i++) { min

Dettagli

Esercizi per il corso di Algoritmi, anno accademico 2011/12

Esercizi per il corso di Algoritmi, anno accademico 2011/12 Esercizi per il corso di Algoritmi, anno accademico 2011/12 Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, nè in C++, etc. ). Di tutti gli

Dettagli

Cicli. S i a i = a 1 + a 2 + a a n

Cicli. S i a i = a 1 + a 2 + a a n Cicli Esprimono in modo compatto e generali l'esecuzione di uno stesso blocco di codice per più volte Anche in matematica sono presenti operatori che eseguono di fatto un ciclo (ad es. sommatoria e produttoria)

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1. Sia T una stringa arbitraria di lunghezza n 1 su un alfabeto Σ. È sempre possibile

Dettagli