Le problème strong> Calcule la complexité de cet algorithme: p> La première boucle fonctionne des heures de connexion.
La deuxième boucle fonctionne à N-I fois avec I à partir de N et changeant à I / 2 dans chaque itération de la boucle extérieure. Donc, la boucle interne fonctionne comme ceci: p> et ainsi de suite sur p> maintenant cette séquence n'est pas arithmétique ni géométrique. Donc, la formule de Remarque: si n - 1 code> fois p> < P> Le terme général est donc
n * (((2 ^ n) -1) / (2 ^ n) code> p>
n / 2 * (A + L) code> ne peut pas être appliquée dessus. Comment procéder en outre à cette solution ou si c'est faux, quelle est la méthode correcte? P>
n / 2 * (A + L) est appliqué, La complexité résultante est
-n / (2 ^ n) = O (2 ^ n). code> p> p>
3 Réponses :
D'abord les calculs Comme vous le voyez, j'ai attribué l'expression que vous souhaitez évaluer à Ici, j'ai utilisé la progression géométrique bien connue de A code>. À partir des deux dernières inégations, il suit la complexité de votre algorithme est
thetha (n logn) code> p>
(1 + 1/2 + 1/4 + .....) = 2 code> p> p>
Comment avez-vous obtenu le terme n-n / 2 ^ logn dans la première étape? :)
J'ai compris! La déclaration sous la boucle extérieure ne fonctionne pas sur N-1 fois parce que la comparaison I> 1 sera fausse! Donc, il va courir une itération avant ces moments qui sont N-2 ^ déconnecteurs!
Comment avez-vous obtenu votre logement * N dans la deuxième étape et soustrayez-le de la série?
@ user2223421 Regardez la première étape: combien de termes vous avez? journal n code>. Chacun d'entre eux porte une valeur de
n code>.
Vous êtes sur la bonne voie. Comme vous l'avez mentionné, la boucle interne exécuterait journal n code> fois. Donc, le nombre total de fois qu'il exécute est le suivant:
(n - n/2) + (n - n/4) + ... (log n) times
= n*(log n) - (n/2 + n/4 + n/8 + ... up to 1)
= n*(log n) - n*(1/2 + 1/4 + ...)
<= n*(log n) - n because (1/2 + 1/4 + ...) is 1 even if we take all terms till infinity (G.P)
= n(log n - 1), which is O(n*log(n))
Comment avez-vous eu des horaires de connexion dans la première étape?
Puisque la boucle extérieure exécutera journal n code> fois ... aussi,
(n + n / 2 + n / 4 + ... + jusqu'à 1) code> devra Soyez lognés N Times car le nombre de termes sera égal au nombre de pouvoirs de
2 code>. J'ai compris?
Oui :) La dernière boucle intérieure sera exécutée que je serai égale à logn!
@Harishakar Comment êtes-vous arrivé aux termes (n-n / 4), (n-n / 4) code> etc. dans la première étape?
@Harishankar Votre deuxième phrase dit "La boucle interne exécuterait la journal n fois".. Qu'est-ce que je rate?
@Harishankar parce que la boucle interne fonctionne à N-I fois et au début, je suis donc la boucle intérieure qui court N-N fois. Ensuite, le contrôle va à l'étape d'incrémentation et je suis divisé par 2 donc I est N / 2 ... alors la boucle interne fonctionne N-N / 2 fois (mise en termes générale N-i), etc.
@Harishakarand Ces termes sont ajoutés ensemble pour obtenir le nombre total de fois où la déclaration est exécutée.
@Harishankarso ... il devrait être n - logn la dernière fois que la boucle interne est exécutée? :)
@Geek Je pense que user2223421 a répondu à vos questions mais m'a tagué plutôt par erreur. Alors, après l'explication de l'utilisateur, est-ce clair maintenant?
@Harishankar oui il est clair maintenant..Je lisiez la boucle interne comme pour (j = 1; j
pour (j = i; j
@Harishankar pouvez-vous s'il vous plaît expliquer votre deuxième étape? Je suis confus, comment logn * n est sorti des supports
@ user2223421 (N - A1) + (N - A2) + (N - A3) ... 10 fois = 10 * N - (A1 + A2 + A3 + .. + A10) Code>, droite ? De même manière, ici 10 est remplacé par
journal n code>.
Le non plus de fois que la déclaration est exécutée est nlogn - 2n (1-1 / 2 ^ logn) p>
Pouvez-vous expliquer comment vous avez eu cette conclusion?
Lire: Quelle est la valeur de x en trimestre de n?
Il n'y a pas de x. Tu veux dire o (x)?
Comme
n code> devient plus gros, l'approche de terme général
n code>. Peut-être que c'est une solution.
Non
x code> Je veux dire que je veux dire la question liée et essayer comme ceci: Un casse-tête liée aux boucles imbriquées