Quelle est la durée de fonctionnement en big-O notation de:Questions sur l'exécution de temps
vector.push_back(item)
et
vec.erase(itr) // itr points in the middle of a vector
Quelle est la durée de fonctionnement en big-O notation de:Questions sur l'exécution de temps
vector.push_back(item)
et
vec.erase(itr) // itr points in the middle of a vector
O (1) (temps amorti, la réaffectation peut se produire) en cas de push_back()
O (n) dans le cas de erase()
ie Linéaire sur le n ombre d'éléments effacés (destructeurs) plus le nombre d'éléments après le dernier élément supprimé (en mouvement).
donc amorti signifie que la réallocation peut se produire? –
@Jon Smith: Non! Lisez ceci: http://en.wikipedia.org/wiki/Analysis amorti –
très utile merci –
Pour "vector.push_back (item)" son seul O (1). Et "vec.erase (itr)" O (n) car les éléments suivants sont décalés vers le bas. Editer: Si elle pointe au milieu dans le vecteur, c'est comme O (n/2).
alors O (n/2) est identique à O (n) droite? –
@Jon: Oui [....] –
De http://www.sgi.com/tech/stl/Vector.html:
Un vecteur est une séquence qui permet l'accès aléatoire à des éléments, l'insertion de la constante de temps et l'enlèvement des éléments à la fin, et l'insertion de temps linéaire et l'enlèvement des éléments au début ou à la milieu.
Quelles idées avez-vous à ce sujet? Ce site n'existe pas pour faire vos devoirs pour vous. – Zeke
Voir: http://stackoverflow.com/questions/3255/big-o-how-do-you-calculate-approximate-it – fncomp
Eh bien, je veux savoir ce qui est plus efficace et pourquoi, et si le vecteur devient plus grand et plus petit si cela affecte –