Structures de données et algorithmes
Un tableau dynamique, quand on ajoute un élément alors qu'il est plein, alloue une nouvelle zone de capacité double et y copie tous les éléments. Si l'on ajoute un à un 1000 éléments à un tableau vide de capacité 1, combien de copies d'éléments sont effectuées au total ?
- A10
- B1023
- C499 500
Afficher la réponse et l'explication
Réponse : B. 1023
La capacité double à chaque fois qu'elle est atteinte, en passant par 1, 2, 4, …, 512, et à chaque fois tous les éléments présents sont copiés : le nombre total de copies vaut donc 1 + 2 + 4 + … + 512 = 1023. Pour 1000 ajouts, cela fait environ une copie par élément : le coût par ajout est constant en moyenne, soit O(1) amorti. Si la capacité n'augmentait que de 1 à chaque fois, les copies totaliseraient 1 + 2 + … + 999 = 499 500, soit O(n²). 10 est le nombre de réallocations, pas le nombre d'éléments copiés.
Continuer : 9 autres questions sur Structures de données et algorithmes