Semplici Algoritmi di Ordinamento

Похожие документы
Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Algoritmi di Ricerca. Esempi di programmi Java

10 - Programmare con gli Array

Corso di Tecniche di Programmazione

Corso di Fondamenti di Informatica Algoritmi su array / 2

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algoritmi su array / 2

Algoritmi di ordinamento

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

Due algoritmi di ordinamento. basati sulla tecnica Divide et Impera: Mergesort e Quicksort

Corso di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

ARRAY E STRINGHE. G. Frosini Slide 1

GESTIONE INFORMATICA DEI DATI AZIENDALI

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Vettori Algoritmi elementari di ordinamento

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002.

Algoritmi e Strutture Dati

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012

Complessità Computazionale

Concetto di Funzione e Procedura METODI in Java

Esercitazione Informatica I AA Nicola Paoletti

Ricerche, ordinamenti e fusioni. 5.1 Introduzione. 5.2 Ricerca completa

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

La selezione binaria

RICERCA DI UN ELEMENTO

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java

Sottoprogrammi: astrazione procedurale

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

Lab 04 Istruzioni, cicli e array"

3) Il seguente numerale A1F0 in base 16 a quale numero in base 10 corrisponde?

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

Parcheggio.rtf 1/8 6 gennaio Prova di programmazione: parcheggio a pagamento

Politecnico di Torino

Esercizi Capitolo 6 - Alberi binari di ricerca

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

4 3 4 = 4 x x x 10 0 aaa

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Java Virtual Machine

Struttura di un programma Java

3. La sintassi di Java

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Le variabili. Olga Scotti

Arduino: Programmazione

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

Alberi binari di ricerca

CALCOLO DEL MASSIMO COMUN DIVISORE

I file di dati. Unità didattica D1 1

Oggetti Lezione 3. aspetti generali e definizione di classi I

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

Esercitazione n 4. Obiettivi


Prova di Laboratorio di Programmazione

Codifica: dal diagramma a blocchi al linguaggio C++

Corso sul linguaggio Java

Inizializzazione, Assegnamento e Distruzione di Classi

Corso di Algoritmi e Strutture Dati Informatica per il Management Prova Scritta, 25/6/2015

Monitor. Introduzione. Struttura di un TDA Monitor

4.1 Modelli di calcolo analisi asintotica e ricorrenze

Algoritmi e Strutture Dati

COGNOME E NOME (IN STAMPATELLO) MATRICOLA

ALGEBRA DELLE PROPOSIZIONI

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2013

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Il problema del produttore e del consumatore. Cooperazione tra processi

Laboratorio di architettura degli elaboratori Progetto finale AA 2005/2006

Programmazione 1 A.A. 2015/2016

Programmazione in Java Parte I: Fondamenti

Rappresentazione dell informazione Codifica Binaria

Esempi di esercizi d esame

L algoritmo di ricerca binaria. Daniele Varin LS Ing. Informatica Corso di Informatica teorica Docente: prof. Paolo Sipala

Batti il tempo Reti di ordinamento

Algoritmi di Ricerca. Esempi di programmi Java

Транскрипт:

Fondamenti di Informatica Semplici Algoritmi di Ordinamento Fondamenti di Informatica - D. Talia - UNICAL 1

Ordinamento di una sequenza di elementi Esistono molti algoritmi di ordinamento. Tutti ricevono in input una sequenza non ordinata di elementi e restituiscono la sequenza ordinata. Algoritmi di ordinamento: selection sort, quick sort, bubble sort, merge sort. Ognuno di questi algoritmi usa un metodo diverso per ordinare una sequenza di elementi. Tutti generano lo stesso risultato (sequenza ordinata), ma alcuni sono più efficienti di altri. Fondamenti di Informatica - D. Talia - UNICAL 2

Selection sort Ordinamento per selezione (selection sort) Questo algoritmo ordina una sequenza di elementi andando a trovare l elemento minore e portandolo nella posizione iniziale della sequenza, e l elemento in posizione iniziale nella posizione occupata del valore minore. 85 37-3 10 9-3 37 85 10 9 Quindi sulla sotto-sequenza non ordinata effettua la stessa operazione fino a che rimane un solo elemento (che è ordinato). -3 37 85 10 9-3 9 85 10 37 Fondamenti di Informatica - D. Talia - UNICAL 3

Selection sort L algoritmo opera su una sequenza non ordinata come se fosse composta di due sotto-sequenze: la prima ordinata e la seconda non-ordinata, andando a cercare il valore minimo nella sequenza nonordinata e portandolo nella ultima posizione della sequenza ordinata. -3 9 85 10 37-3 9 10 85 37-3 9 10 85 37-3 9 10 37 85 Quando la sotto-sequenza non ordinata è composta da un solo elemento l ordinamento è terminato (l ultimo elemento è il maggiore). Fondamenti di Informatica - D. Talia - UNICAL 4

Selection Sort in Java public void ordinasel(int[] vet) for (int j = 0; j < vet.length-1; j++) int temp; int pos_min = j; for (int i = j+1; i < vet.length; i++) if (vet[pos_min] > vet[i]) pos_min = i; if (pos_min!= j) temp = vet[j]; vet[j] = vet[pos_min]; vet[pos_min] = temp; } } // chiude il for } Fondamenti di Informatica - D. Talia - UNICAL 5

Selection Sort in Java Si usano due indici i e j: j scorre su tutto l array, mentre i scorre sulla parte dell array non ordinata. All inizio si assume che la posizione dell elemento minore è 0 e dalla posizione 1 fino alla fine si cerca il valore minimo. Se questo è più piccolo dell elemento nella posizione 0 viene scambiato. Quindi si incrementa l indice j (che identifica la prima posizione della parte non ordinata) e si esegue nuovamente la ricerca del minimo nella sotto-sequenza rimanente. Alla fine l elemento che rimarrà nell ultima posizione dell array (v[v.length-1]) è il valore maggiore. Fondamenti di Informatica - D. Talia - UNICAL 6

Bubble sort Ordinamento per scambio (bubble sort) Questo algoritmo ordina una sequenza di elementi andando a confrontare gli elementi a coppie e scambiandoli di posto se il secondo è minore del primo. 1 a scansione 85 37-3 10 9 37 85-3 10 9 37-3 85 10 9 37-3 10 85 9 L algoritmo termina quando dopo aver scandito tutta la sequenza senza che non sia stato effettuato alcuno scambio. In questo caso la sequenza risulta già ordinata. Fondamenti di Informatica - D. Talia - UNICAL 7

Bubble sort Dopo la prima scanzione abbiamo effettuato 4 scambi ma non abbiamo ottenuto la sequenza ordinata. Quindi si riparte dall inizio a scambiare gli elementi: 37-3 10 9 85-3 37 10 9 85 2 a scansione -3 10 37 9 85 3 a scansione -3 10 9 37 85-3 9 10 37 85 Se dopo una scansione (in questo caso la 4 a scanzione) non sono stati effettuati scambi, gli elementi sono già ordinati e l ordinamento è completato. Fondamenti di Informatica - D. Talia - UNICAL 8

Bubble Sort in Java public void ordinabub(int[] v) boolean scambio ; int j= v.length-1; do scambio = false; for (int i=0; i < j ; i++) int temp; if (v[i] > v[i+1]) temp = v[i]; v[i] = v[i+1]; v[i+1] = temp; scambio = true; } } // chiude il for j = j-1; } while (scambio == true); } Fondamenti di Informatica - D. Talia - UNICAL 9

Bubble Sort e Selection Sort in Java Gli algoritmi di ordinamento selection sort e bubble sort sono algoritmi abbastanza semplici, ma non sono i più efficienti. Il quick sort ed il merge sort sono più complessi ma più efficienti perché effettuano un numero minore di scansioni degli elementi di una sequenza. Altri algoritmi di ordinamento : insertion sort heap sort shaker Sort.... Fondamenti di Informatica - D. Talia - UNICAL 10