¿Cuál es la complejidad computacional de un vector en crecimiento?

Suponiendo que se refiere a una estructura de datos tipo matriz que admite la adición de nuevos elementos (como std :: vector en C ++):

  • La complejidad temporal del acceso al elemento ( operator[] ) es O (1), es decir, tiempo constante garantizado.
  • La complejidad temporal de agregar un nuevo elemento ( push_back ) se amortiza en tiempo constante . Esto significa que una operación individual puede ser lenta, ya que puede implicar una reasignación y copia de datos , pero tiene la garantía de que a partir de un vector vacío, cualquier secuencia posible de operaciones [matemáticas] x [/ matemáticas] tendrá el tiempo complejidad [matemática] O (x) [/ matemática], es decir, en promedio solo pasaremos tiempo constante por operación.

    En particular, esto significa que comenzar con un vector vacío, leer sus elementos de la entrada y agregarlos al vector un elemento a la vez, se garantiza que se ejecute en tiempo lineal.