ALGORITMI Un algoritmo è un insieme di istruzioni: -ordinate -non ambigue -effettivamente computabili.

Slides:



Advertisements
Presentazioni simili
Puntatori Linguaggio C.
Advertisements

INFORMATICA Altre Istruzioni di I/O
Gli Algoritmi di ordinamento
INFORMATICA Algoritmi fondamentali
Corso di Laurea Triennale in Ingegneria Gestionale Corso di Fondamenti di informatica A. A A.Pinto Algoritmi di ricerca 1.
Uso avanzato di C.
Iterazione A. Ferrari.
Interazione con lutente I menu. Menu La forma più semplice di interazione con lutente è il menu che fornisce una serie di opzioni tra le quali lutente.
Procedure e funzioni ricorsive
Sviluppo di programmi strutturati
Introduzione al linguaggio C
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
INFORMATICA Strutture iterative
PROGRAMMI DI RICERCA E ORDINAMENTO
Tail recursion: esempio
Esercizi su strutture dinamiche Fondamenti di Programmazione Canale AD a.a. 2009/2010.
Laboratorio di Linguaggi lezione V Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi lezione VII: puntatori 3/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
INTRODUZIONE ALLA PROGRAMMAZIONE STRUTTURATA
CORSO DI PROGRAMMAZIONE II
Algoritmi e Strutture Dati III. Algoritmi di Ordinamento
Algoritmi di ordinamento
APPUNTI SUL LINGUAGGIO C
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
Strutture di controllo nel C
Strutture di controllo in C -- Flow Chart --
Esercizi C sui tipi definiti dall’utente
Politecnico di Milano Esercizi Stringhe Ricerca binaria.
Esercizi di riepilogo sul linguaggio C: file, puntatori, liste
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
File di testo, file binari
Esercizi C su array e matrici
Le liste dinamiche La ricorsione
Le funzioni.
Crivello Di Eratostene (fonte wikipedia
1 ListaDiElem Cancella( ListaDiElem lista, TipoElemento elem ) { ListaDiElem puntTemp; if( ! ListaVuota(lista) ) if( lista–>info == elem ) { puntTemp =
void binario(int n); …………………
Massimo Comun Divisore
Unità Didattica 3 Linguaggio C
Programmazione di Calcolatori
Esercizi su File.
Esercizi Liste.
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
Registro a scorrimento
Alberi binari Definizione della struttura dati: struct tree { };
Complessità di un algoritmo
ALGORITMI a.
Algoritmo che viene utilizzato per elencare gli elementi di un insieme secondo una sequenza stabilita da una relazione d'ordine, in modo che ogni elemento.
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni – BCOR Ingegneria Elettronica – BELR Introduzione al C Esercitazione 5 D. Bloisi, A.
Algoritmi di Ordinamento
Algoritmi CHE COS’è UN ALGORITMO di ORDINAMENTO?
A LGORITMI DI ORDINAMENTO Cinzia Reverberi. COS’È UN ALGORITMO? Un algoritmo è un insieme ben ordinato di operazioni non ambigue ed effettivamente calcolabili.
Definizione di un algoritmo
Programmazione Avanzata Java e C 12/01/ Lezione 28: Algoritmi di ordinamento.
#include void main() { int a,b,c,; float s, x,x1,x2,delta,alfa,beta; int num[3]; int i; printf("La forma classica dell'equazione di 2° grado è: a*x^2+b*x+c=0\n.
Ordinamento1 Algoritmi di ordinamento  Selection Sort  Quick Sort  Lower bound alla complessità degli algoritmi di ordinamento.
ALGORITMO Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi. Un formalismo che permette di rappresentare.
Introduzione agli algoritmi e strutture dati 2/ed T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein Copyright © 2005 – The McGraw-Hill Companies srl.
GLI ALGORITMI VISIBILE SUL BLOG INFORMATICA ANNO SCOLASTICO 2013 / 2014 GABRIELE SCARICA 2°T.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Definizione di algoritmo: Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi. Un problema risolvibile.
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
Lo strano mondo degli algoritmi di ordinamento Algoritmi.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Esercitazione sull’ ordinamento 20 maggio 2003
Quick sort void quick_sort (int a[],int l, int r) { int i, j,v, t; if (r>l) { v=a[r];//L’elemento “pivot” è quello più a dx i=l-1; j=r; // i scorre da.
APPUNTI SUL LINGUAGGIO C
Transcript della presentazione:

ALGORITMI Un algoritmo è un insieme di istruzioni: -ordinate -non ambigue -effettivamente computabili

Quick sort Ordina i dati suddividendo il problema in problemi di complessità minore

Esempio #define MAX 5 typedef float vector [MAX]; vector v; int size; void quicksort(int low, int hi); void leggi(); void scrivi(); main() { printf ("Ordinamento di un vettore"); leggi(); quicksort (0, size-1); scrivi(); } void quicksort(int low, int hi) { int i, j; float pivotelem, temp; if ( low < hi ) { i = low; j = hi; pivotelem = v[hi]; do { while ((i < j) && (v[i] <= pivotelem)) i = i + 1; while ((j > i) && (v[j] >= pivotelem)) j = j - 1; if (i < j) { temp = v[i]; v[i] = v[j]; v[j] = temp; } } while (i < j); if ((i != hi) && (v[i] != v [hi])) { temp = v[i]; v[i] = v[hi]; v[hi] = temp;} if (low < i - 1) quicksort (low, i - 1); if (i + 1< hi ) quicksort (i + 1, hi); } }

Heap sort Questo algoritmo inserisce a destra dell’ elenco il valore più semplice

Esempio for (i=0; i < 20; i++) lung [i] =0; while (printf("\n OPERA SU HEAP? 1/0\n"), scanf("%d", &choice), (choice) { do { printf ("\n Operare: malloc/1 free/2 e indice (0/19)\ \nelementi \n"); for (i=0; i < 20; i++) printf ("%d ", lung [i]); printf("\n"); scanf("%d %d", &choice, &i); } while ( ((choice !=1) && (choice!=2)) || ((i 19))); switch (choice) { Case 1: do { printf ("\n Quanti byte da allocare\n"); scanf ("%d", &nbyte); } while ( nbyte <= 0); p[i] = MIAmalloc(nbyte); stampa (p[i]); lung[i]=nbyte; stampaheap (); break; Case 2: printf (" Si libera l’elemento %d lungo %d \n", i, lung[i]); MIAfree(p[i]); lung [i]=0; stampaheap (); } } stampaheap ();

Merge sort Unisce due elenchi già ordinati ai dati per ordinarli in una lista sola

Esempio #define MAX 5 typedef float vector [MAX]; vector v; int size; void merge (iniz1, iniz2, fine); void mergesort(i, j) int i, j; { int m; if ( i < j ) { m = (j + i) / 2; mergesort (i, m); mergesort (m +1, j); merge (i, m + 1, j); } void leggi(); void scrivi(); main() { printf ("Ordinamento di un vettore: MERGESORT "); leggi(); mergesort (0, size-1); scrivi(); }

Counting Sort Ordina i dati paragonabili uno alla volta e l confronta con un valore numerico

Bubble sort Confronta i dati e mette quello di valore minore a sinistra dell’ elenco

Esempio #define MAX 5 #define true 1 #define false 0 typedef float vector [MAX]; vector v; int size; void bubblesort(int iniz, int fine); void leggi(); void scrivi(); main() { printf ("Ordinamento di un vettore"); leggi(); bubblesort(0, size-1); scrivi(); } void bubblesort(int iniz, int fine) { int NONSCAMBIO, I; float temp; do { NONSCAMBIO = true; for (I = iniz; I < fine; I = I + 1) { if (v[I] > v[I+1]) { NONSCAMBIO = false; temp = v[I]; v[I] = v[I+1]; v[I+1] = temp; } while (! NONSCAMBIO); }

Selection sort Serve ad ordinare pochi elementi, ordina i dati assegnando un minore tra quelli che rimangono

Insertion sort Ordina i maggiori a destra ed i minori a sinistra