AN Fondam98 Sorting Ricerca in un vettore ordinato.

Slides:



Advertisements
Presentazioni simili
Algoritmi di ordinamento
Advertisements

INFORMATICA Algoritmi fondamentali
Sottoprogrammi: funzioni e procedure
Unità G3 Algoritmi notevoli. Ordinamento Un insieme di dati {a0, a1, a2, …, an} si dice ordinato in ordine crescente se a0 a1 a2 a3 … an I dati sono generalmente.
Algoritmi notevoli.
Algoritmi notevoli In linguaggio C.
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:
Code con priorità Ordinamento
PROGRAMMI DI RICERCA E ORDINAMENTO
Esercizi su alberi binari
Tail recursion: esempio
Mergesort1 if (n>1) /* la collezione contiene almeno due elementi. */ {1. Dividi la collezione in due di circa la metà degli elementi. 2. chiamata ricorsiva.
Alberi binari Definizione della struttura dati: struct tree { };
Esercizi su alberi binari di ricerca
Corso di Informatica grafica 1 Introduzione Quando si rappresentano modelli di oggetti 3D costituiti da facce poligonali secondo delle proiezioni alcune.
Specifiche senza JML: uso delle asserzioni. 2 Asserzioni in Java Dal jdk 1.4 (da Febbraio 2002) cè meccanismo per gestire asserzioni Asserzione: espressione.
CORSO DI PROGRAMMAZIONE II
e array a più dimensioni
Ordinamento di una lista: bubble-sort
Algoritmi e Strutture Dati III. Algoritmi di Ordinamento
Algoritmi di ordinamento
Esercizi su alberi binari
Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo.
Algebra Lineare Esercizi assegnati.
AN FI Iterazione&Invarianti Il ragionamento iterativo Gli invarianti di ciclo.
AN FI Array Array in Java. AN FI Array Dichiarazione di array in Java [ ]; //oppure u [] ; int a[]; int[] a; u La dimensione non è specificata.
AN Fondam98 Puntatori Azioni e procedure Assegnamenti, indirizzi e puntatori.
PUNTATORI Un puntatore è una variabile destinata a contenere lindirizzo di unaltra variabile Vincolo di tipo: un puntatore a T può contenere solo lindirizzo.
Problema dell’ordinamento di un array: Il metodo Bubble Sort.
1.Scrivere una funzione per cercare un numero x in una lista circolare di interi. La funzione deve restituire NULL se il numero non esiste. 2.Scrivere.
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
void binario(int n); …………………
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
Soluzioni e commenti esercizi 1 e 2
Grafi Rappresentazione mediante liste di adiacenza:
Tail recursion: esempio
Esercizi La distanza di hamming tra due interi x e y si definisce come il numero di posizioni nella rappresentazione binaria di x e y aventi bit differenti.
Esercizi su alberi binari di ricerca
Alberi binari Definizione della struttura dati: struct tree { };
Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi. Un problema risolvibile mediante un algoritmo.
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.
ALGORITMI Un algoritmo è un insieme di istruzioni: -ordinate -non ambigue -effettivamente computabili.
Array (ordinamento) CORDA – Informatica A. Ferrari.
alberi completamente sbilanciati
#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.
ALGORITMI DI RICERCA Nella programmazione s’incontra spesso la necessità di ricercare un elemento (chiave) in un elenco, oppure di ordinare gli elementi.
Dato un vettore di reali di dimensione DIM, si inseriscano N elementi presi da tastiera, si utilizzi 0 per terminare l’inserimento. Ordinare gli elementi.
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.
Flusso Statico e Dinamico 20/03/2006. Codice da Interpretare int valore; valore = funz(); if( valore > 0 ) { [codice1] } else { [codice2] } return valore;
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Definizione di algoritmo: Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi. Un problema risolvibile.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
Algoritmi e Strutture Dati
03/19/09E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2009 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo 2009 Codici.
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
Array (visita e ricerca) CORDA – Informatica A. Ferrari.
Primo Compitino Terzo Esercizio Implementare il tipo di dato astratto Table un oggetto di tipo Table ha due colonne e un numero variabile di righe.
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Esercizi iteratori. Matrice import java.util.Iterator; public class MatrixIterator implements Iterator { private Matrix matrix; private int currentRow.
Esercitazione sull’ ordinamento 20 maggio 2003
Problema dell’Ordinamento. Problema dell’ordinamento Formulazione del problema –Si vuole ordinare una lista di elementi secondo una data proprietà P Esempio:
L’ALGORITMO Un algoritmo è un procedimento formale che risolve un determinato problema attraverso un numero finito di passi. Un problema risolvibile mediante.
Linguaggio C: Funzioni e Puntatori Laboratorio di Programmazione Gruppo 1.
APPUNTI SUL LINGUAGGIO C
comprensione e modifica di codice
Transcript della presentazione:

AN Fondam98 Sorting Ricerca in un vettore ordinato

AN Fondam98 Sorting int search( float[] a, int n, float x) Se x e contenuto nel vettore a di componenti di indice 0,...,n restituisce la posizione di x in a, altrimenti restituisce -1 return (n==0) ? ((a[n] ==x )?0:-1) : (a[n]==x )?n:search(a,n-1,x) Complessita computazionale: O(n)

AN Fondam98 Sorting Ricerca binaria Se x e contenuto nel vettore a di componenti di indice 0,...,n restituisce la posizione di x in a, altrimenti restituisce -1 return binSearch(a,0,n,x)

AN Fondam98 Sorting int binSearch(int[]a,int k,int n,int x){ //n indice ultima componente, k indice prima componente int m = (k+n)/2; if (m<n){ if (a[m]==x ) return m; else return (x<a[m]) ? binSearch(a,0,m-1,x) : binSearch(a,m+1,n,x) } else return -1;} Complessita computazionale: O(log 2 n)

AN Fondam98 Sorting Algoritmi di ordinamento

AN Fondam98 Sorting Lintestazione void sort( float[] a, int n ) modifica il vettore di ingresso a le cui componenti hanno indice 0,1,…,n ordinandolo in senso non decrescente float[] sort( float[] a, int n ) solo Java restituisce un vettore di n+1 componenti costituite dai valori ordinati di a, vettore di ingresso le cui componenti hanno indice 0,1,…,n

AN Fondam98 Sorting Naive sorting void sort( float[] a, int n ) u Se n=0 il vettore e gia ordinato u Se n>0, sia posMax lindice della componente che contiene il massimo. Il vettore ordinato si ottiene scambiando a[n] con a[posMax] e iterando il procedimento per il vettore costituito dalle componenti 1,…, n-1 Fondamenti 97

AN Fondam98 Sorting Naive sorting void naiveSort( float v[], int n ){ //n dimensione del vettore int iMax; while( n > 0 ){ iMax = detPosMax( v, n ); if( iMax != n ) swap( &v[iMax], &v[n-1] ); n--; }

AN Fondam98 Sorting Bubble sorting N. passi nel caso peggiore (vettore ordinato al contrario): (n-1) + (n-2) + … + 1 = n*(n-1)/2 N. passi nel caso migliore (vettore gia ordinato): (n-1) Complessita computazionale O(n 2 )

AN Fondam98 Sorting Bubble sorting void sort( float[] a, int n ) u Se n=0 il vettore e gia ordinato u Se n>0, il vettore ordinato si ottiene scambiando a[i] con a[i+1] se a[i]>a[i+1] per i=0,…,k essendo k lindice dellultima componente di a scambiata e iterando il procedimento per il vettore costituito dalle componenti 0,…,k

AN Fondam98 Sorting Bubble sorting Numero di passi: (n-1) + (n-2) + … + 1 = n*(n-1)/2 Complessita computazionale O(n 2 )