2015-12-23 18 views
5

Quale sarebbe la notazione di Big O per due per cicli non nidificati?Big O Notation per due loop non annidati

Esempio:

for(int i=0; i<n; i++){ 
    System.out.println(i); 
} 

for(int j=0; j<n; j++){ 
    System.out.println(j); 
} 
+1

Possibile duplicato di [Semplice spiegazione inglese di Big O] (http://stackoverflow.com/questions/487258/plain-english-explanation-of-big-o) – GayashanNA

risposta

14

lineare

O(n) + O(n) = 2*O(n) = O(n) 

Non importa quanti cicli non nidificati avete (se questo numero è una costante e non dipende n) la complessità sarebbe lineare e sarebbe pari al numero massimo di iterazioni nel ciclo.

+0

Questo significa che quando si dispone di 2 nidificati loops 'O (n^2)' dovresti dividerli in 2 single loops per ottenere 'O (n)' al prezzo di qualche memoria? – ACV

1

Sarebbe O (2n) perché si corre n + n = 2n iterazioni.

O (2n) è essenzialmente equivalente a O (n) poiché 2 è una costante.

5

Tecnicamente questo algoritmo funziona ancora in tempo O (n).

Mentre il numero di iterazioni aumenta di 2 per ogni incremento n, il tempo impiegato ancora aumenta ad un tasso lineare, quindi, a O (n).

3

Sarà O(n) + O(n) ==> Effettivamente O(n) poiché non manteniamo valori costanti.