Sto analizzando un algoritmo e voglio solo sapere se sono sulla strada giusta.Analisi algoritmi per complessità temporale
Per questo algoritmo, sto solo contando le moltiplicazioni sulla linea che hanno *** in esse.
Ecco l'algoritmo:
- Così sto iniziando dal più linea interna, posso vedere ci sono 2 le operazioni di là (i due moltiplicazioni).
- Ora sto guardando i 2 loop più interni, quindi posso dire che il
p=p*20*z
viene eseguito esattamente(j) + (j-1)+(j-2)+(j-3)...1
volte. Questo è uguale aj(j+1)/2
. - Quindi, in totale, poiché ci sono due moltiplicazioni, succede
2 * (j(j+1)/2)
. - Quindi, infine, il ciclo "i" avviene esattamente n volte, quindi, in totale, è
n(2 * (n(n+1)/2))
.
Questo è il mio processo di pensiero dietro questo. Ho ragione? Grazie.
No non lo sei. Il risultato finale dovrebbe contenere solo 'n'. Hai 'j' lì. –
grazie per la rapida risposta. Sarebbe n (2 * (n (n + 1)/2))? – 0xSina
In realtà, penso che sia solo un errore di battitura, poiché la sostituzione di j per n è corretta per la derivazione che ha attraversato lì, perché n è il più grande j. @PragmaOnce sì, anche se ovviamente ciò può essere semplificato un po '. –