2010-09-29 4 views
0

Les deux algorithmes ont-ils la même caractérisation thêta de Θ (n^2)?Détermination des complexités temporelles des algorithmes les plus défavorables

int sum = 0; 
for (int i = 0; i < n; i++) 
    for (int j = 0; j < n * n; j++) 
     sum++; 

int sum = 0; 
for (int i = 0; i < n; i++) 
    for (int j = 0; j < i; j++) 
     sum++; 

Si ce n'est pas le cas, cela signifie-t-il que cette caractérisation n'est pas Θ (n^3)?

int sum = 0; 
for (int i = 0; i < n; i++) 
    for (int j = 0; j < i * i; j++) 
     for (int k = 0; k < j; k++) 
      sum++; 
+2

qu'en pensez-vous? – aaronasterling

+0

Je ne pense pas est pour le premier mais il est n^2 pour j Dan

+2

comment compteriez-vous les mesures prises pour l'un des deux? – aaronasterling

Répondre

2

@ Dan, pour le premier, vous avez vraiment dire j < n * n plutôt que j < n? Si oui, la complexité temporelle du premier est Θ (n^3), n'est-ce pas? Si vous vouliez dire j < n, alors je crois que les deux premiers sont tous les deux Θ (n^2): Le premier prend n^2 pas, et le second prend 1 + 2 + ... + n = n (n + 1)/2 qui est Θ (n^2). Je pense que le troisième est Θ (n^4), mais c'est plus difficile à prouver. Certainement O (n^4).

+0

oui je voulais dire j Dan

+0

@Dan La multiplication augmente le degré par n, pas 1. 'for (int i = 0; i

+0

@Tony quand @Dan dit degré je crois qu'il parlait de l'exposant. Donc oui @Dan si vous multipliez n^k * n, vous obtenez n^(k + 1). Je ne suis pas sûr que ce soit ce que vous demandez. – LarsH

Questions connexes