[Algoritmi] individuare algoritmo divide et impera

Fede5...
Ciao ragazzi, qualcuno potrebbe aiutarmi con il seguente esercizio?

Progettare un algoritmo basato sulla tecnica divide et impera il cui costo in tempo sia definito dalla relazione di ricorrenza

$ g(n)={ ( 1\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad n<=1 ),( 4g(n/2)+Theta (n^2logn)\quad\quad n > 1 ):} $

Non riesco a capire quale comando utilizzare per ottenere $ Theta (n^2logn) $

Personalmente ho iniziato nel seguente modo:

int pippo(int*a, int i, int f){
if(n <= 1)
   return 1;
   else{
   int m=(i+f)/2;
   ...
  }

}



Grazie!

Risposte
Quinzio
Farei una cosa tipo questo:

void function(unsigned int n) {
  if (n > 1) {
    function(n/2);
    function(n/2);
    function(n/2);
    function(n/2);
    for (int i=0; i<n; i++) 
      for (int j=0; j<n; j++) 
        for (int k=n; k>0; k >>= 1) {
          // un po' di codice qui
        }
  }
}


Rispondi
Per rispondere a questa discussione devi prima effettuare il login.