馃敟 ARRAYS (ARREGLOS)

Lo primero a considerar es que los arreglos est谩n ordenados, mantienen una relaci贸n profunda con tareas de ordenamiento.Cada elemento de un arreglo posee un 铆ndice num茅rico.

En general si no requieres ordenar algo, no requieres utilizar un arreglo, sin embargo si requieres optimizar por cuestiones de rendimiento, lo mejor es utilizar otro tipo de estructuras, e incluso cuando se requiere algunos tipos de ordenamiento, existen estructuras pensadas para esto, como pueden ser las listas o listas enlazadas.

驴Cu谩ndo utilizar un arreglo?

Los arreglos son recomendables cuando cuando se requiere realizar mantener un orden.

驴Cu谩l es el time complexity de los arreglos?

  • Para insertar valores (depende la posici贸n).
  • Para eliminar valores (depende la posici贸n).
  • Para buscar valores O(n).
  • Para acceder a valores 0(1).

Cuando hablamos de acceder a valores nos referimos a utilizar el 铆ndice directamente. Cuando accedemos a un valor, independientemente del tama帽o del arreglo, esta operaci贸n resulta inmediata.

Para el proceso de insertar, la complejidad depende de la posici贸n en la cual se va a insertar. Si por ejemplo se hace al final del arreglo entonces es una operaci贸n inmediata 0(1), pero si se se hace al inicio se tienen que desplazar todos los indices posteriores O(n). Lo mismo aplica para el proceso de eliminar valores de un arreglo, si eliminamos el primer elemento esto implica reajustar todos los 铆ndices O(n). Por ello las operaciones push (empujar al final) y pop (eliminar del final) son inmediatas O(1), mientras que shift (agregar al inicio) y unshift (eliminar del inicio) son proporcionales al valor de “n” O(n).

驴Cu谩l es el time complexity de los m茅todos de arreglos de JavaScript?

La siguiente es la lista de complejidad de algunos m茅todos de JavaScript.

  • push O(1)
  • pop O(1)
  • shift O(n)
  • unshift O(n)
  • concat O(n)
  • slice O(n)
  • splice O(n)
  • sort O(n log n)
  • forEach / map / filter / reduce / etc O(n)