Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli

Lezione sugli algoritmi notevoli in c++, Slide di Tecniche E Linguaggi Di Programmazione

Slide della lezione sugli algoritmi notevoli in c++

Tipologia: Slide

2016/2017

Caricato il 01/04/2017

larossapeppe
larossapeppe 🇮🇹

4.8

(4)

9 documenti

Anteprima parziale del testo

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à.
Docsity logo


Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved