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 )