¿Cuáles son los tiempos de ejecución para insertar un elemento en un LinkedList en la cabeza, el final y en algún lugar en el medio?

Para responder a su pregunta en el orden que solicitó:

Para insertar un elemento en el inicio de una Lista vinculada, la complejidad del tiempo es O (1), tiempo constante.

Al insertar un elemento al final de la Lista vinculada, la complejidad del tiempo depende de si tiene o no una referencia al último nodo de la Lista vinculada. Si lo hace, entonces la complejidad del tiempo es O (1). Esto se debe a que puede llamar a esa referencia y agregar un nuevo elemento justo después. Si no tiene esta referencia, debe recorrer toda la lista para encontrar el último elemento, haciendo que la complejidad temporal sea O (n).

Insertar en algún lugar en el medio es una pregunta relativamente vaga. Para hacerlo menos vago, digamos que queremos insertar un elemento directamente en el medio. Esto haría que la complejidad del tiempo fuera O (n / 2), pero dado que elimina los coeficientes al usar la notación Big O, la complejidad del tiempo es nuevamente O (n).

Este sitio web tiene varias complejidades de tiempo para estructuras de datos y algoritmos de clasificación: Hoja de trucos de la complejidad del algoritmo Big-O

Suponiendo enlaces hacia adelante:

  • inserción de la cabeza : constante.
  • inserción final : lineal en implementación ingenua, constante si siempre realiza un seguimiento del último elemento (que en sí mismo es constante para cada operación).
  • inserción media : lineal si necesita encontrar el elemento primero, constante para insertar realmente.