👤

Justifiez que la fonction définie ci-contre a une compléxité quadrique : "

def addition_sans_doublon(n):
-- tab = []
----for i in range(n-1):
------ for j in range(i, n):
-------- tab.append(i+j)
-- return tab


Pour y répondre, il a fallut justifier en disant le nombre d'opération qui serait égale à "(n-1)*(n+2)/2" (en réutilisant la formule pour calculer l'air d'un triangle rectangle) pour ensuite dire à partir de cela que la compléxité a pour ordre de grandeur O(n²), et ainsi dire que ce programme est quadrique. Cependant, je n'ai pas compris d'ou vient le n-1, ainsi que le n+2 et pourquoi on l'utilise dans le formule, si quelqu'un pourrait m'expliquer, merci d'avance.

Sagot :

Bonjour, voici une explication plus simple pour comprendre :

La fonction 'addition_sans_doublon' a une complexité quadrique, car elle contient une boucle imbriquée qui parcourt tous les éléments d'un tableau de taille n. La boucle interne parcourt tous les éléments du tableau de 0 à n, ce qui signifie qu'elle effectue n itérations. La boucle externe parcourt tous les éléments du tableau de 0 à n-1, ce qui signifie qu'elle effectue n-1 itérations. La complexité totale de la fonction est donc de (n-1) * n = n^2 - n, qui est quadratique en n.

Pour illustrer cela, considérons le cas où n = 4. La boucle externe parcourt les éléments 0, 1, 2, et 3 du tableau, et pour chaque itération de la boucle externe, la boucle interne parcourt tous les éléments du tableau de i à n. Ainsi, pour n = 4, la boucle interne parcourt les éléments 0 à 4 lors de la première itération de la boucle externe, les éléments 1 à 4 lors de la deuxième itération, les éléments 2 à 4 lors de la troisième itération, et les éléments 3 à 4 lors de la quatrième itération. En tout, la boucle interne parcourt 4 + 3 + 2 + 1 = 10 éléments, ce qui correspond à une complexité quadratique.

En espérant t'avoir aidé au maximum !

Bonnes fêtes de fin d'année :)

Other Questions

© 2024 IDNLearn. All rights reserved.