Soit un vecteur initialement vide. On consid`ere n push back
Transcription
Soit un vecteur initialement vide. On consid`ere n push back
Soit un vecteur initialement vide. On considère n push back() d’un objet E, n > 1. On considère que le vecteur a une capacité qui croı̂t d’un facteur 2 à chaque fois qu’il est plein, capacité qui commence à 0, puis 1, 2, 4, 8 . . . Il existe k ∈ N∗ tel que 2k−1 < n ≤ 2k . Ainsi, au bout de n ajouts, on aura fait k + 1 allocations + recopie (20 , 21 , 22 , . . . , 2k ). La complexité de ces allocations est : k X 2i = 2k+1 − 1 i=0 C’est bien une complexité en O(n) rien que pour les allocations et recopies. En tenant compte des n copies effectuées par les push back() (sans prendre en compte l’allocation et la recopie des éléments existants) qui est donc une opération linéaire dans sa globalité, on montre que la somme des deux opérations distinctes reste de complexité linéaire. Ainsi, en moyenne, un push back() est de complexité constante. 1