Quelle est la complexité temporelle pour chacun des segments de code suivants?Détermination de la complexité temporelle pour les segments de code
1. int i, j, y=0, s=0;
for (j = 1; j <= n; j ++)
{
y=y+j;
}
for (i = 1; i <= y; i ++)
{
s++;
}
Ma réponse est O (2n) car il fait passer dans chaque boucle n fois et il y a deux boucles
2. function (n) {
while (n > 1) {
n = n/3 ;
}
Ma réponse à celle-ci est n^(1/3) depuis n devient un tiers de sa taille à chaque fois que
3. function (n) {
int i, j, k ;
for (i = n/2; i <= n; i ++) { //n/2?
for (j = 1; j <= n; j = 2*j) { //logn
for (k = 1; k <= n; k = 2*k) { //logn
cout << ”COSC 2437.201, 301” << endl;
}
}
}
}
J'ai dit la réponse à celui-ci était O (log2 * log2n * n/2) mais je suis assez confus au sujet de la première boucle. La boucle n'a qu'à parcourir la moitié de n fois, donc ce serait n/2 correct? Merci pour votre aide tout le monde.
Tout d'abord, 'O (2n)' est juste 'O (n)' - et qui est la mauvaise réponse pour question 1. – meowgoesthedog
Qu'en est-il de la première boucle pour vous confondre exactement? – Frank
Comment le premier segment peut-il être autre chose que O (n)? Pour la première boucle, la boucle doit seulement parcourir la moitié de n fois, donc ce serait n/2 correct? – Jason