Buonasera,mi sono trovato a ragionare su questi 2 algoritmi e vorrei delle conferme,se possibile,sulla complessità
codice:
int fun(int a[], int n) {
int i;
if(n<2) return a[0];
for(i=1;i<n;i++)
a[i] = a[i]-a[i-1];
return fun(a,1) + fun(a,n-1);
}
sarebbe O(1)+O(n) = O(n)
è semplicemente così o dimentico qualcosa?
---------------------------------------
codice:
int fun(int a[], int n) {
int i,j,k,tot;
if(n<3) return 0;
for(i=0;i<2;i++) {
a[i]++;
for(j=0;j<n;j++)
a[j] += a[i];
for(k=1;k<n-1;j++)
a[i] += a[k];
}
return fun(a,2*n/3) + 2 * fun(a+n/3,2*n/3);
}
fun(a+n/3,2*n/3) significa la funzione sun applicata all’array a a partire dall’elemento n/3 e con
secondo parametro 2*n/3
O(1)+O(2)+O(n)+O(n-2)=O(n^2)
però non ne sono sicuro,mi date conferme?
Colgo l' occasione per fare gli Auguri di Buone Feste a tutte le persone del Forum
Grazie in anticipo