La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Ricerca sequenziale in un array di interi

Presentazioni simili


Presentazione sul tema: "Ricerca sequenziale in un array di interi"— Transcript della presentazione:

1 Ricerca sequenziale in un array di interi
Int ricerca_sequenziale(int v[],int n,elemento) {int t; for(t=0; t<n; t++) if(elemento==v[t]) return t; return -1;} La funzione restituisce -1 nel caso l’elemento non sia presente nell’array. Complessità: Operazione principale: il confronto caso migliore: t=0 (l’elemento cercato è il primo dell’array) confronto caso peggiore: t=n-1 (l’elemento cercato è l’ultimo o non è presente) n confronti caso medio: n/2 confronti C ricerca_sequenziale(n)O(n)

2 Ricerca binaria in un array di interi ordinato
int ric_bin(int v[],int basso, int alto,int elemento) {int medio=(alto+basso)/2; if(elemento<v[medio] ric_bin(v[], basso,medio-1,elemento); else if(elemento>v[medio]) ric_bin(v[],medio+1,alto,elemento); if(elemento=v[medio]) then return medio; else return -1; } int ricerca_binaria(int v[],int n,int elemento) {ric_bin(v,0,n-1,elemento);

3 Complessità della ricerca binaria
Caso migliore:( l’elemento cercato è all’indice (n-1)/2) 1 confronto Caso peggiore: (l’elemento cercato non è presente) sia n-1=2m C(1)=1 C(n)=1+C((n-1)/2)=1+C(2m-1)=1+1+C(2m-2)=….= log n confronti Caso medio: (log n)/2 Cricerca_binaria(n) O(log n).

4 Ricerca binaria in un array ordinato (versione iterativa)
int ricerca_binaria(int v[],int n, elemento) {int basso, medio, alto; basso=0;alto=n-1, while(basso<alto){ medio=(basso+alto)/2; if(elemento<v[medio]) alto=medio-1; else if(elemento>v[medio]) basso=medio+1; else return medio; } return -1;


Scaricare ppt "Ricerca sequenziale in un array di interi"

Presentazioni simili


Annunci Google