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

Documents pareils