J'analyse un algorithme et je veux juste savoir si je suis sur la bonne voie.Analyser des algorithmes pour la complexité temporelle
Pour cet algorithme, je ne compte que les multiplications sur la ligne qui ont *** en eux.
est ici l'algorithme:
- Je suis donc à partir de la ligne la plus intérieure, je peux voir, il y a là 2 opérations (les deux multiplications).
- Maintenant, je regarde les 2 boucles les plus internes, donc je peux dire que le
p=p*20*z
est exécuté exactement(j) + (j-1)+(j-2)+(j-3)...1
fois. Cela arrive à être égal àj(j+1)/2
. Donc, au total, puisqu'il y a deux multiplications, cela arrive2 * (j(j+1)/2)
. - Ensuite, la boucle "i" arrive exactement n fois, donc, au total, c'est
n(2 * (n(n+1)/2))
.
C'est mon processus de réflexion derrière cela. Ai-je raison? Merci.
Non, vous n'êtes pas. Le résultat final ne devrait contenir que "n". Vous avez 'j' là. –
merci pour la réponse rapide. Serait-ce n (2 * (n (n + 1)/2))? – 0xSina
En fait, je pense que c'est juste une faute de frappe car le remplacement de j pour n est correct pour la dérivation par laquelle il est passé, parce que n est le plus grand j. @PragmaOnce oui, bien que cela puisse évidemment être simplifié un peu. –