6.6Ordinamento di Vettori Ordinamento di dati –Applicazione computazionale importante –Virtualmente ogni organizzazione deve ordinare dei dati Enormi quantità

Slides:



Advertisements
Presentazioni simili
Territorio: provincia di Pordenone
Advertisements

Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
Pregnana Milanese Assessorato alle Risorse Economiche
1 MeDeC - Centro Demoscopico Metropolitano Provincia di Bologna - per Valutazione su alcuni servizi erogati nel.
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
II° Circolo Orta Nova (FG)
/ fax
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
1 DECRETO LEGISLATIVO 626/94 19 SETTEMBRE 1994 MODIFICHE ED INTEGRAZIONI DECRETO LEGISLATIVO 242/96 19 MARZO 1996 CORSO DI FORMAZIONE ED INFORMAZIONE IN.
Frontespizio Economia Monetaria Anno Accademico
1 la competenza alfabetica della popolazione italiana CEDE distribuzione percentuale per livelli.
1 Tavolo del Patto per la crescita intelligente, sostenibile e inclusiva Il ricorso agli ammortizzatori sociali nei territori colpiti dagli eventi sismici.
DISEGNO TECNICO INDUSTRIALE
Numerazione in base tre Prof. Lariccia Giovanni Gruppo: Roberta Spicciariello, Roberta Accaria e Maria Elisa Graziano.
Dipartimento di Ricerca Sociale - Università del Piemonte Orientale 1 Castelli Aperti giugno 2005 Castello di Camino (AL) IL PUBBLICO DI CASTELLI.
La gestione delle controversie interne relatore: Silvio Beorchia.
PROGRAMMI DI COOPERAZIONE TERRITORIALE I controlli di primo livello in azione Un caso pratico Programma Interreg IV C Progetto B3 Regions Regione Piemonte.
EPA 01/02 III/1 I consumi di prodotti agro-alimentari: differenziazioni nello spazio e nel tempo Cosa spiega le differenze nei consumi tra individui diversi…
EIE 0607 V / 1 sussidio unitario fisso allesportazione si avrà commercio se e solo se | P B AUT - P A AUT | > tc - P B = P A + tc – (A è il paese esportatore)
Programmazione 1 9CFU – TANTE ore
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
1. 2 CAMERA DI COMMERCIO PESARO E URBINO Elaborazione Servizio Statistica Fonti: ISTAT – Unioncamere – Tagliacarne – Infocamerere – Regione Marche – Comune.
Corso di base sull’uso del software di analisi meteorologica DIGITAL ATMOSPHERE Prodotti meteo A cura di Vittorio Villasmunta Corso Digital Atmosphere.
La partita è molto combattuta perché le due squadre tentano di vincere fino all'ultimo minuto. Era l'ultima giornata del campionato e il risultato era.
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Scritte scritte scritte scritte scritte scritte scritte Scritte scritte Titolo.
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
DHTML: Modello degli Eventi 1. 2 Sommario Introduzione Evento onclick Evento onload Gestione errori con onerror Gestione mouse con levento onmousemove.
Reti di Scuole, competizioni di robotica, tecnologie e apprendimenti
Analisi di Immagini e Dati Biologici
19 Lezione 21/5/04 Composizione dell'immagine 1 COMPOSIZIONE DELLIMMAGINE.
Settimana: 3-7 marzo Orariolunedimartedi Mercoledi 5 Giovedi 6 Venerdi lezione intro alla fis mod DR lezione intro alla fis mod DR.
2 3 4 RISERVATEZZA INTEGRITA DISPONIBILITA 5 6.
Melfi, 1 aprile 2011 – MediaShow 1 Social Network: possibilità di uso consapevole nella didattica Uso, consapevolezza, opportunità, proposte Caterina Policaro.
1ROL - Richieste On Line Ente pubblico 5ROL - Richieste On Line.
Struttura Alessio e Rebecca tra sogno e realtà
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
POLITICHE URBANE E MOBILITÀ SOSTENIBILE: LE PROSPETTIVE PER ROMA CAPITALE Qualità dei servizi pubblici a Roma: focus sul trasporto locale Roma, 20 settembre.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
1 Guida per linsegnamento nei corsi per il conseguimento del CERTIFICATO DI IDONEITÀ ALLA GUIDA DEL CICLOMOTORE.
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
1 Questionario di soddisfazione ATA - a. sc. 2008/09 Il questionario è stato somministrato nel mese di aprile Sono stati restituiti 29 questionari.
24 aprile 2002 Avvisi: Risultati 1 o Esonero: (entro) lunedi 27 disponibili nella pag. WEB, ma anche esposti nella bacheca fuori dal corridoio 2 o dente,
LE SAI LE TABELLINE? Mettiti alla prova!.
1 Questionario di soddisfazione del servizio scolastico Anno scolastico 2011/2012 Istogramma- risposte famiglie.
1101 = x 10 x 10 x x 10 x = CORRISPONDENZE
1 Questionario di soddisfazione Studenti - a. sc. 2008/09 Il questionario è stato somministrato dal mese di aprile al mese di maggio Sono stati restituiti.
21 marzo 2002 (ri-)Avvisi: Giovedi 28 marzo la lezione e sospesa. Nuovo indirizzo di Spedire messaggi e esercizi solo.
1 FOLGARIA 2002 CAMPO SCUOLA GIOVANI CALTO – GRIGNANO CASA S. MARIA.
Settimana: 10 – 14 marzo Orariolunedimartedi Mercoledi 12 Giovedi 13 Venerdi Lezione Dal c al c Lezione Dal c al c
Ad opera di: Matteo Donatelli e Maurizio Di Paolo Presentazione su : Elettropneumatica 1.
I dati del questionario di autovalutazione dei docenti Prime rilevazioni.
Bando di Residenza Cap Scheda ENTE 3ROL - Richieste On Line.
Area Sviluppo Pianificazione e Controllo 1 Innovazione del processo organizzativo delle manifestazioni fieristiche: lesperienza di Veronafiere Gianni Bruno.
monitoraggio apprendimenti disciplinari scuola primaria "L.Tempesta"
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
1 Guida per linsegnamento nei corsi per il conseguimento del CERTIFICATO DI IDONEITÀ ALLA GUIDA DEL CICLOMOTORE.
-17 Aspettative economiche – Europa Settembre 2013 Indicatore > +20 Indicatore 0 a +20 Indicatore 0 a -20 Indicatore < -20 Unione Europea Totale: +6 Indicatore.
+21 Aspettative economiche – Europa Dicembre 2013 Indicatore > +20 Indicatore 0 a +20 Indicatore 0 a -20 Indicatore < -20 Unione Europea Totale: +14 Indicatore.
© GfK 2012 | Title of presentation | DD. Month
Pippo.
TUTTO HA UN… SENSO INTERSEZIONE 5 ANNI
Economia delle Aziende, Pubbliche e Non Profit Sistema di misurazione e valutazione e Programma triennale per la trasparenza e l’integrità: alcuni esempi.
Bando Pittori e Scultori in Piemonte alla metà del ‘700
Dove siamo L’ Italia: una crisi nella crisi Vladimiro Giacché (presidente Centro Europa Ricerche) 20 giugno 2014.
lun mar mer gio ven SAB DOM FEBBRAIO.
USR-INRiM-GMEE-CE.SE.DI Formazione&Metrologia Modulo 1 1 Modulo 1 Costruzione di un linguaggio comune Preparazione liste dei termini. Condivisione.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Transcript della presentazione:

6.6Ordinamento di Vettori Ordinamento di dati –Applicazione computazionale importante –Virtualmente ogni organizzazione deve ordinare dei dati Enormi quantità di dati da ordinare Bubble sort (ordinamento a bolle) –Passaggi successivi: ad ogni passaggio i valori più piccoli risalgono in cima al vettore, mentre i i valori più grandi cadono in basso al vettore. –Lordinamento viene raggiunto attraverso la comparazione di una coppia di elementi Se si riscontra un ordine crescente (o uguale ), nessun cambiamento Se si riscontra un ordine decrescente, si scambiano gli elementi –Si itera questo meccanismo Esempio: inzio: passo 1: passo 2:

6.7Case Study: Calcolo della media, mediana e moda usando i vettori Mean - media Median – mediana è il valore di mezzo della lista ordinata (In particolare, la mediana è un indice di posizione, mentre la media è un indice rappresentativo, perché sintetizza un insieme di dati attraverso un singolo numero) –1, 2, 3, 4, 5 3 è la mediana Moda – il valore più frequente –1, 1, 1, 2, 3, 3, 4, 5 1 è la moda

Outline 1. Prototipidi Funzione 1.1 array inizializzazione 2. Chiamata alle funzioni mean, median, e mode 1/* Fig. 6.16: fig06_16.c 2 Questo programma introduce largomento dellanalisi dei dati 3 in un indagine. Calcola la media, la mediana e la moda dei dati */ 4#include 5#define SIZE void mean( const int [] ); 8void median( int [] ); 9void mode( int [], const int [] ) ; 10void bubbleSort( int [] ); 11void printArray( const int [] ); 12 13int main() 14{ 15 int frequency[ 10 ] = { 0 }; 16 int response[ SIZE ] = 17 { 6, 7, 8, 9, 8, 7, 8, 9, 8, 9, 18 7, 8, 9, 5, 9, 8, 7, 8, 7, 8, 19 6, 7, 8, 9, 3, 9, 8, 7, 8, 7, 20 7, 8, 9, 8, 9, 8, 9, 7, 8, 9, 21 6, 7, 8, 7, 8, 7, 9, 8, 9, 2, 22 7, 8, 9, 8, 9, 8, 9, 7, 5, 3, 23 5, 6, 7, 2, 5, 3, 9, 4, 6, 4, 24 7, 8, 9, 6, 8, 7, 8, 9, 7, 8, 25 7, 4, 4, 2, 5, 3, 8, 7, 5, 6, 26 4, 5, 6, 1, 6, 5, 7, 8, 7 }; mean( response ); 29 median( response ); 30 mode( frequency, response ); 31 return 0; 32}

Outline 3. definizione funzione mean 3.1 definizione funzione median ordinamento del vettore Print middle element 33 34void mean( const int answer[] ) 35{ 36 int j, total = 0; printf( "%s\n%s\n%s\n", "********", " Media", "********" ); for ( j = 0; j <= SIZE - 1; j++ ) 41 total += answer[ j ]; printf( La media è il valore medio dei valori dei dati\n" 44 La media è uguale al totale di\n" 45 tutti i valori dei dati diviso il mumero\n" 46 valori ( %d ). Il valor medio per\n" 47 questa esecuzione è: %d / %d = %.4f\n\n", 48 SIZE, total, SIZE, ( double ) total / SIZE ); 49} 50 51void median( int answer[] ) 52{ 53 printf( "\n%s\n%s\n%s\n%s", 54 "********", " Mediana", "********", 55 Larray non ordinato di valutazioni è" ); printArray( answer ); 58 bubbleSort( answer ); 59 printf( "\n\Larray ordinato è" ); 60 printArray( answer ); 61 printf( "\n\nLelemento mediano è %d dello\n" 62 array ordinato di %d elementi.\n" 63 Per questa esecuzione la mediana è %d\n\n", 64 SIZE / 2, SIZE, answer[ SIZE / 2 ] );

Outline 65} 66 67void mode( int freq[], const int answer[] ) 68{ 69 int rating, j, h, largest = 0, modeValue = 0; printf( "\n%s\n%s\n%s\n", 72 "********", " Moda", "********" ); for ( rating = 1; rating <= 9; rating++ ) 75 freq[ rating ] = 0; for ( j = 0; j <= SIZE - 1; j++ ) 78 ++freq[ answer[ j ] ]; printf( "%s%11s%19s\n\n%54s\n%54s\n\n", 81 Response", Frequency", Histogram", 82 " ", " " ); for ( rating = 1; rating <= 9; rating++ ) { 85 printf( "%8d%11d ", rating, freq[ rating ] ); if ( freq[ rating ] > largest ) { 88 largest = freq[ rating ]; 89 modeValue = rating; 90 } for ( h = 1; h <= freq[ rating ]; h++ ) 93 printf( "*" ); definizione funzione mode frequency[] aumenta in funzione di response[] Nota che lindice in frequency[] è il valore di un elemento in response[] ( answer[] ) Stampa stella in funzione del valore di frequency[]

Outline 3.3 definizione funzione bubbleSort 3.3 definizione funzione printArray 95 printf( "\n" ); 96 } printf( La moda è il valore più frequente.\n" 99 Per questa esecuzione il valore della moda è %d che 100 " ricorre %d volte.\n", modeValue, largest ); 101} void bubbleSort( int a[] ) 104{ 105 int pass, j, hold; for ( pass = 1; pass <= SIZE - 1; pass++ ) for ( j = 0; j <= SIZE - 2; j++ ) if ( a[ j ] > a[ j + 1 ] ) { 112 hold = a[ j ]; 113 a[ j ] = a[ j + 1 ]; 114 a[ j + 1 ] = hold; 115 } 116} void printArray( const int a[] ) 119{ 120 int j; for ( j = 0; j <= SIZE - 1; j++ ) { if ( j % 20 == 0 ) 125 printf( "\n" ); Bubble sort: se lelemento è fuori ordine, scambialo

Outline Program Output printf( "%2d", a[ j ] ); 128 } 129} ******** Mean ******** La media è il valore medio dei valori dei dati La media è uguale al totale di tutti i valori dei dati diviso il mumero valori ( 99 ). Il valor medio per Questa esecuzione è: 681 / 99 = ******** Mediana ******** Larray non ordinato di valutazioni è Larray ordinato è La mediana è lelemento 49 dello array ordinato di 99 elementi. Per questa esecuzione la mediana è 7

Outline Program Output ******** Mode ******** Response Frequency Histogram * 2 3 *** 3 4 **** 4 5 ***** 5 8 ******** 6 9 ********* 7 23 *********************** 8 27 *************************** 9 19 ******************* La moda è il valore più frequente. Per questa esecuzione la moda è 8 che ricorre 27 volte.

6.8Ricerca in un Vettore: Ricerca Lineare e Ricerca Binaria Si ricerca un elemento che corrisponda a un dato valore chiave (key value) Ricerca Lineare –semplice –Confronta ogni elemento del vettore con la chiave di ricerca –Utile per vettori piccoli e non ordinati

Ricerca lineare in un array #include #define SIZE 100 int linearSearch(const int [], int, int ); int main(){ int a[ SIZE ], x, searchKey, element; for ( x = 0; x <= SIZE - 1; x++ ) /* create data */ a[x] = 2 * x; printf( "Enter integer search key:\n" ); scanf( "%d", &searchKey ); element = linearSearch(a, searchKey, SIZE ); if ( element != -1 ) printf("Found value in element %d\n", element); else printf( "Value not found\n" ); return 0; }

Continua int linearSearch(const int array[], int key, int size) { int n; for ( n = 0; n <= size - 1; ++n ) if ( array[ n ] == key ) return n; return -1; } Enter integer search key: 36 Found value in element 18 Enter integer search key: 37 Value not found

6.8 Ricerca in un Vettore: Ricerca Lineare e Ricerca Binaria (II) Ricerca binaria –Si usa in vettori ordinati –Confronta lelemento di mezzo middle con la chiave di ricerca Se uguale, elemento trovato match found Se chiave < elemento di mezzo, cerca nella prima metà del vettore chiave > elemento di mezzo, cerca nellaltra metà del vettore Ripeti –Molto veloce; al più n steps, con 2 > numero di elementi Per un vettore di 30 elementi al più 5 steps 2 > 30 n 5

Binary search of an array #include #define SIZE 15 int binarySearch( const int [], int, int, int ); void printHeader( void ); void printRow( const int [], int, int, int ); int main() { int a[ SIZE ], i, key, result; for ( i = 0; i <= SIZE - 1; i++ ) a[ i ] = 2 * i; printf( "Enter a number between 0 and 28: " ); scanf( "%d", &key ); printHeader(); result = binarySearch( a, key, 0, SIZE - 1 ); if ( result != -1 ) printf("\n%d found in array element %d\n",key,result); else printf( "\n%d not found\n", key ); return 0; }

int binarySearch(const int b[], int searchKey,int low, int high) { int middle; while ( low <= high ) { middle = ( low + high ) / 2; printRow( b, low, middle, high ); if ( searchKey == b[ middle ] ) return middle; else if ( searchKey < b[ middle ] ) high = middle - 1; else low = middle + 1; } return -1; /* searchKey not found */ } Binary search of an array

Continua 53 /* Print a header for the output */ 54 void printHeader( void ) 55 { 56 int i; printf( "\nSubscripts:\n" ); for ( i = 0; i <= SIZE - 1; i++ ) 61 printf( "%3d ", i ); printf( "\n" ); for ( i = 1; i <= 4 * SIZE; i++ ) 66 printf( "-" ); printf( "\n" ); 69 }

71 /* Print one row of output showing the current 72 part of the array being processed. */ 73 void printRow( const int b[], int low, int mid, int high ) 74 { 75 int i; for ( i = 0; i <= SIZE - 1; i++ ) 78 if ( i high ) 79 printf( " " ); 80 else if ( i == mid ) 81 printf( "%3d*", b[ i ] ); /* mark middle value */ 82 else 83 printf( "%3d ", b[ i ] ); printf( "\n" ); 86 }

Enter a number between 0 and 28: 25 Subscripts: * * * 28 24* 25 not found

6.9Vettori Multidimensionali Vettori con più indici –Tabelle con righe e colonne (array m x n) –Come le matrici: indicata la riga, si sceglie la colonna riga 0 riga 1 riga 2 colonna 0colonna 1colonna 2colonna 3 a[0][0] a[1][0] a[2][0] a[0][1] a[1][1] a[2][1] a[0][2] a[1][2] a[2][2] a[0][3] a[1][3] a[2][3] Indice riga nome Array Indice Colonna

6.9 Vettori Multidimensionali (II) inizializzazione int b[ 2 ][ 2 ] = { { 1, 2 }, { 3, 4 } }; –Inizializzatori raggruppati per righe in parentesi –Se non sono abbastanza, si riempe (indeterminatamente) a zero int b[ 2 ][ 2 ] = { { 1 }, { 3, 4 } }; Referenziamento –Specificare riga e poi la colonna printf( "%d", b[ 0 ][ 1 ] );

Outline 1. inizializzazione variabili 1.1 definizione di funzioni che ricevono come argomento un vettore bidimensionale 1.2 inizializza studentgrades[][] 2. Chiama le funzioni minimum, maximum, e average 1/* Fig. 6.22: fig06_22.c 2 Double-subscripted array example */ 3#include 4#define STUDENTS 3 5#define EXAMS 4 6 7int minimum( const int [][ EXAMS ], int, int ); 8int maximum( const int [][ EXAMS ], int, int ); 9double average( const int [], int ); 10void printArray( const int [][ EXAMS ], int, int ); 11 12int main() 13{ 14 int student; 15 const int studentGrades[ STUDENTS ][ EXAMS ] = 16 { { 77, 68, 86, 73 }, 17 { 96, 87, 89, 78 }, 18 { 70, 90, 86, 81 } }; printf( "The array is:\n" ); 21 printArray( studentGrades, STUDENTS, EXAMS ); 22 printf( "\n\nLowest grade: %d\nHighest grade: %d\n", 23 minimum( studentGrades, STUDENTS, EXAMS ), 24 maximum( studentGrades, STUDENTS, EXAMS ) ); for ( student = 0; student <= STUDENTS - 1; student++ ) 27 printf( "The average grade for student %d is %.2f\n", 28 student, 29 average( studentGrades[ student ], EXAMS ) ); return 0; 32} Ogni riga è uno studente, ogni colonna è il voto ad un esame

Outline 3. Definisci le funzioni 33 34/* Find the minimum grade */ 35int minimum( const int grades[][ EXAMS ], 36 int pupils, int tests ) 37{ 38 int i, j, lowGrade = 100; for ( i = 0; i <= pupils - 1; i++ ) 41 for ( j = 0; j <= tests - 1; j++ ) 42 if ( grades[ i ][ j ] < lowGrade ) 43 lowGrade = grades[ i ][ j ]; return lowGrade; 46} 47 48/* Find the maximum grade */ 49int maximum( const int grades[][ EXAMS ], 50 int pupils, int tests ) 51{ 52 int i, j, highGrade = 0; for ( i = 0; i <= pupils - 1; i++ ) 55 for ( j = 0; j <= tests - 1; j++ ) 56 if ( grades[ i ][ j ] > highGrade ) 57 highGrade = grades[ i ][ j ]; return highGrade; 60} 61 62/* Determine the average grade for a particular exam */ 63double average( const int setOfGrades[], int tests ) 64{

Outline 3. Definisci le funzioni 65 int i, total = 0; for ( i = 0; i <= tests - 1; i++ ) 68 total += setOfGrades[ i ]; return ( double ) total / tests; 71} 72 73/* Print the array */ 74void printArray( const int grades[][ EXAMS ], 75 int pupils, int tests ) 76{ 77 int i, j; printf( " [0] [1] [2] [3]" ); for ( i = 0; i <= pupils - 1; i++ ) { 82 printf( "\nstudentGrades[%d] ", i ); for ( j = 0; j <= tests - 1; j++ ) 85 printf( "%-5d", grades[ i ][ j ] ); 86 } 87}

Outline Program Output The array is: [0] [1] [2] [3] studentGrades[0] studentGrades[1] studentGrades[2] Lowest grade: 68 Highest grade: 96 The average grade for student 0 is The average grade for student 1 is The average grade for student 2 is 81.75