Algoritmi di ordinamento



Похожие документы
Corso di Tecniche di Programmazione

Algoritmi di Ricerca. Esempi di programmi Java

RICERCA DI UN ELEMENTO

Funzioni in C. Violetta Lonati

Fondamenti di Informatica 2

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

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

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

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:

Corso di Informatica

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'

Semplici Algoritmi di Ordinamento

Algoritmi su array / 2

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

LABORATORIO DI PROGRAMMAZIONE EDIZIONE 1, TURNO B

10 - Programmare con gli Array

Corso di Fondamenti di Informatica Algoritmi su array / 2

La struttura dati ad albero binario

Laboratorio di programmazione

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 13 File Binari

1) Dati in ingresso 2 numeri, l algoritmo calcola e stampa a video la loro somma

Versione 7.0 Taglie e Colori. Negozio Facile

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};

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Appello di Informatica B

I puntatori e l allocazione dinamica di memoria

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

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

Esercizio 1. Esercizio 1

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Esercizio: gestione di un conto corrente

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

Esempio: Array di struct

GESTIONE INFORMATICA DEI DATI AZIENDALI

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Inizializzazione, Assegnamento e Distruzione di Classi

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

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

Esercizio 1. Esercizi 5. Esercizio 3. Esercizio 2 CICLI

Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( )

Definizione di classi con array di oggetti

MANUALE UTENTE Fiscali Free

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Parte 1. Vettori di bit - AA. 2012/13 1.1

MANUALE PORTALE UTENTE IMPRENDITORE

PORTALE CLIENTI Manuale utente

Il personale docente e la segreteria didattica per effettuare la gestione degli scrutini dovranno eseguire semplici operazioni.

dall argomento argomento della malloc()

Visibilità dei Membri di una Classe

MANUALE ESSE3 Gestione Registro delle lezioni

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

Richiesta pagina PHP (es: index.php)

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

CHIUSURE di MAGAZZINO di FINE ANNO

Lab 11 Gestione file di testo"

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Sottoprogrammi: astrazione procedurale

Manuale Debident. Per accedere al servizio, inserite il nome, il numero cliente e la password che vi è stata assegnata.

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Algoritmi e Strutture Dati

Aritmetica dei Calcolatori 2

4. Un ambiente di sviluppo per Java

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

COGNOME E NOME (IN STAMPATELLO) MATRICOLA

Schede ADI ADP ADEM Prestazioni aggiuntive MMG. - Manuale - Data Solution Provider s.r.l.

Manuale di Aggiornamento BOLLETTINO. Rel B. DATALOG Soluzioni Integrate a 32 Bit

Allocazione dinamica della memoria - riepilogo

INIZIO ANNO E/ Per evitare eventuali attese operative, è fortemente consigliato, procedere con le operazioni di seguito descritte

Ricerca sequenziale di un elemento in un vettore

Introduzione al MATLAB c Parte 2

esercizi Esercizi / problemi

Programmazione I - Laboratorio

Procedura per l abbinamento tenico-atleta

Calcolare il massimo di una lista

Vettori Algoritmi elementari di ordinamento

Valutazione della Didattica On-Line

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Gestione dei File in C

Транскрипт:

Algoritmi di ordinamento Scopo di questa esercitazione: Comprendere la complessità del problema ordinamento cerchiamo di valutare il costo di una soluzione (confrontandola con un altra ) Modifiche al codice degli algoritmi di ordinamento, per supportare tipi di dato complessi 1

Esercizio 1 Naive Sort con conteggio degli scambi e dei confronti Come facciamo a valutare la bontà di un algoritmo? Idea: contiamo quante volte eseguiamo le operazioni costose di un algoritmo Con Naïve Sort, le operazioni costose possono essere i confronti e gli scambi. 2

Esercizio 1 Naive Sort con conteggio degli scambi e dei confronti Realizzare l algoritmo Naive Sort contando quanti confronti e quanti scambi vengono effettuati Per comodità, definiamo i contatori come variabili globali, in modo da potervi accedere da più funzioni 3

Esercizio 2 Implementare e modificare l algoritmo Bubble Sort visto a lezione al fine di contare i confronti e gli scambi eseguiti Realizzare un programma che legga un vettore di MAXDIM elementi e ne esegua L ordinamento con Naive Sort L ordinamento con Bubble Sort e stampi a video il numero di confronti e scambi effettuato da ogni algoritmo Qual è il caso peggiore per bubble sort? 4

Esercizio 2 Per comodità: void bubblesort(int v[], int n) { int i; int ordinato = 0; while (n>1 && ordinato==0) { ordinato = 1; for (i=0; i<n-1; i++) { if ( v[i] > v[i+1] ) { scambia( &v[i], &v[i+1]); ordinato = 0; n--; 5

Esercizio 3 Implementare e modificare l algoritmo Insert Sort visto a lezione al fine di ordinare un array di float Realizzare un programma che legga un vettore di MAXDIM elementi di tipo float, lo ordini usando l algoritmo InsertSort e stampi a video l array ordinato. Suggerimenti: Sarà necessario modificare i prototipi delle funzioni usate Sarà necessario controllare che le operazione di confronto siano ancora effettivametne valide Sarà necessario controllare che le operazioni di assegnamento siano compatibili col nuovo tipo 6

Esercizio 3 Per comodità: void insminore(int v[], int pos) { int i = pos-1, x = v[pos]; while (i>=0 && x<v[i]) { v[i+1]= v[i]; /* crea lo spazio */ i--; v[i+1]=x; /* inserisce l elemento */ void insertsort(int v[], int n) { int k; for (k=1; k<n; k++) insminore(v,k); 7

Esercizio 4 Un sito web del turismo trentino tiene un elenco aggiornato delle stazioni sciistiche e del manto nevoso (in cm, un intero). Si deve realizzare un programma che chieda in ingresso, per MAXDIM località, il nome di una località (al più 20 caratteri senza spazi), e l altezza del manto nevoso (un intero). A tal fine si definisca una apposita struttura dati stazione Si definisca un array di MAXDIM elementi di tipo stazione, e si chiedano all utente i dati relativi a MAXDIM località (nome e neve), memorizzandoli nell array Si realizzi una funzione compare(stazione s1, stazione s2) che restituisce -1, 0 o 1 a seconda che il manto nevoso in s1 sia rispettivametne minore, uguale o maggiore al manto nevoso in s2 Si modifichi l algoritmo Merge Sort visto a lezione, e lo si utilizzi per ordinare le località in base alla neve presente (suggerimento: si usi la funzione compare( ) ) Si stampi a video l elenco ordinato delle località 8

Per comodità: Esercizio 4 void merge(int v[], int i1, int i2, int fine, int vout[]) { int i=i1, j=i2, k=i1; while ( i <= i2-1 && j <= fine ) { if (v[i] < v[j]) { vout[k] = v[i]; i++; else { vout[k] = v[j]; j++; k++; while (i<=i2-1) { vout[k]=v[i]; i++; k++; while (j<=fine) { vout[k]=v[j]; j++; k++; for (i=i1; i<=fine; i++) v[i] = vout[i]; 9

Esercizio 4 Per comodità: void mergesort(int v[], int iniz, int fine, int vout[]) { int mid; if ( iniz < fine ) { mid = (fine + iniz) / 2; mergesort(v, iniz, mid, vout); mergesort(v, mid+1, fine, vout); merge(v, iniz, mid+1, fine, vout); 10

Esercizio 5 Implementare e modificare gli algoritmi Insert Sort, Merge Sort e Quick Sort visti a lezione al fine di contare i confronti e gli scambi eseguiti Realizzare un programma che legga un vettore di MAXDIM elementi e ne esegua l ordinamento con gli algoritmi di cui al punto precedente, e stampi a video il numero di confronti e scambi effettuato da ogni algoritmo 11