Scarica Lezione sugli algoritmi notevoli in c++ e più Slide in PDF di Tecniche E Linguaggi Di Programmazione solo su Docsity! ELEMENTI DI PROGRAMMAZIONE Elementi di Programmazione Ing. Mauro Iacono Seconda Università degli Studi di Napoli Facoltà di Studi Politici e per l’Alta Formazione Europea e Mediterranea “Jean Monnet” - PARSeC Research Group ELEMENTI DI PROGRAMMAZIONE Parte seconda: il linguaggio C++ Ing. Mauro Iacono Seconda Università degli Studi di Napoli Facoltà di Studi Politici e per l’Alta Formazione Europea e Mediterranea “Jean Monnet” - PARSeC Research Group 5 M auro Iacono – Elem entidi P rogram m azion e – Ingegneri a Inform atica ed Elettronica – Seconda U n iversità di N ap oli M auro Iacono – Elem entidi P rogram m azion e – Ingegneri a Inform atica ed Elettronica – Seconda U n iversità di N ap oli Introduzione ai sistemi informatici - capitolo 3 - L’elaborazione dell’informazione Bubble Sort Il Bubble Sort (o ordinamento a bolle) è un semplice algoritmo di ordinamento di complessità O(n2) Si vuole ordinare un vettore di N valori (numerati da 0 a N-1 Il passo base dell'algoritmo consiste nel confrontare ciascuno degli elementi del vettore con il suo successivo e scambiarli se il primo è maggiore del secondo: questo porta l'elemento maggiore del vettore nell'ultima posizione Tale confronto viene effettuato ripetutamente, ricominciando dal primo elemento ma tralasciando ogni volta l'ultimo elemento usato al passo precedente 6 M auro Iacono – Elem entidi P rogram m azion e – Ingegneri a Inform atica ed Elettronica – Seconda U n iversità di N ap oli M auro Iacono – Elem entidi P rogram m azion e – Ingegneri a Inform atica ed Elettronica – Seconda U n iversità di N ap oli Introduzione ai sistemi informatici - capitolo 3 - L’elaborazione dell’informazione Implementazione void bubbleSort(int *array, int length) {int i, j, temp; for(i = length - 1; i > 0; i--) /* effettua tutti i passaggi */ { for(j = 0; j < i; j++) /* singolo passaggio su tutto il vettore*/ { /* PASSO BASE */ if(array[j] > array[j+1]) /* confronta ogni valore con il successivo */ { temp = array[j]; /* scambio */ array[j] = array[j+1]; array[j+1] = temp; } } } } 7 M auro Iacono – Elem entidi P rogram m azion e – Ingegneri a Inform atica ed Elettronica – Seconda U n iversità di N ap oli M auro Iacono – Elem entidi P rogram m azion e – Ingegneri a Inform atica ed Elettronica – Seconda U n iversità di N ap oli Introduzione ai sistemi informatici - capitolo 3 - L’elaborazione dell’informazione Con ottimizzazione void bubbleSort(int *array, int length) {int i, j, temp; bool continua=true; for(i = length - 1; ((i > 0)&&(continua)); i--) /* effettua tutti i passaggi */ /* ma esce se in un passaggio non c'è alcuno scambio (vettore già in ordine) */ { continua=false; // cout << "passaggio "<<length-i<<endl; for(j = 0; j < i; j++) /* singolo passaggio su tutto il vettore*/ { /* PASSO BASE */ if(array[j] > array[j+1]) /* confronta ogni valore con il successivo */ {temp = array[j]; /* scambio */ // cout << "scambio "<<array[j]<<" con "<<array[j+1]<<endl; array[j] = array[j+1]; array[j+1] = temp; continua=true; } } // if (!continua) {cout<<"Termino l'algoritmo anticipatamente"<<endl;} } } 10 M auro Iacono – Elem entidi P rogram m azion e – Ingegneri a Inform atica ed Elettronica – Seconda U n iversità di N ap oli M auro Iacono – Elem entidi P rogram m azion e – Ingegneri a Inform atica ed Elettronica – Seconda U n iversità di N ap oli Introduzione ai sistemi informatici - capitolo 3 - L’elaborazione dell’informazione Implementazione int RicercaDicotomicaBinaria(int v[], int lunghezza, int x) { int s,d,m; s = 0; d = lunghezza-1; while(s<=d) { m = (s+d)/2; if(v[m]==x) return m; // il valore x è presente in posizione m if(v[m]<x) s = m+1; else d = m-1; } return -1; // il valore non è stato trovato, ma s e d // individuano dove dovrebbe essere se ci fosse } 11 M auro Iacono – Elem entidi P rogram m azion e – Ingegneri a Inform atica ed Elettronica – Seconda U n iversità di N ap oli M auro Iacono – Elem entidi P rogram m azion e – Ingegneri a Inform atica ed Elettronica – Seconda U n iversità di N ap oli Fondamenti di Informatica - Mauro Iacono - Seconda Università di Napoli L'uso di queste slide è libero e autorizzato dietro semplice invio di una email all'indirizzo mauro.iacono@unina2.it a patto che non si effettui alcuna modifica alle stesse, soprattutto nelle parti che identificano l'autore. L'autore non si assume alcuna responsabilità.