Inicio > Cursos > Algoritmos > Big O Notation
AlgoritmosComplejidad y Big OLección 1 de 19

Big O Notation

Big O es la notación matemática que describe cómo escala un algoritmo: si duplicas el tamaño de los datos, ¿cuánto más tiempo tarda? O(1) significa constante: tarda lo mismo sin importar el tamaño. O(n) es lineal: el doble de datos significa el doble de tiempo. O(n²) es cuadrática: el doble de datos significa cuatro veces más tiempo.

Esta notación ignora constantes (O(2n) se simplifica a O(n)) porque lo que importa es la tendencia a gran escala.

Por qué importa Big O en la práctica: un algoritmo O(n²) funciona bien con 100 elementos (10.000 operaciones) pero es inutilizable con 1 millón (1 billón de operaciones). Un O(n log n) con 1 millón de elementos hace solo ~20 millones de operaciones. Los buscadores como Google indexan billones de páginas: si su búsqueda fuera O(n), tardaría horas.

En entrevistas técnicas de empresas como Google, Amazon o Meta, optimizar de O(n²) a O(n) es exactamente lo que buscan.

// O(1) - Constante: no depende del tamaño
function obtenerPrimero(array) {
  return array[0]; // Siempre igual de rápido
}

// O(n) - Lineal: crece proporcionalmente
function buscarLineal(array, objetivo) {
  for (let i = 0; i < array.length; i++) {
    if (array[i] === objetivo) return i; // Hasta n pasos
  }
  return -1;
}

// O(n²) - Cuadrática: bucle dentro de bucle
function burbuja(arr) {
  for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr.length - i - 1; j++) {
      if (arr[j] > arr[j+1]) [arr[j], arr[j+1]] = [arr[j+1], arr[j]];
    }
  }
  return arr;
}

// O(log n) - Logarítmica: divide a la mitad cada paso
function busquedaBinaria(arr, objetivo) {
  let izq = 0, der = arr.length - 1;
  while (izq <= der) {
    const mid = Math.floor((izq + der) / 2);
    if (arr[mid] === objetivo) return mid;
    arr[mid] < objetivo ? izq = mid + 1 : der = mid - 1;
  }
  return -1;
}

// O(n log n) - La mayoría de algoritmos de ordenamiento eficientes
// Merge Sort, Quick Sort, Heap Sort

// Orden de complejidad (mejor a peor):
// O(1) < O(log n) < O(n) < O(n log n) < O(n²) < O(2^n) < O(n!)
Consejo⚡ Para n=1000: O(log n)≈10 operaciones, O(n)=1000, O(n²)=1,000,000. La diferencia importa muchísimo en producción.
Complejidad de Espacio y Reglas →

Practica esta lección

Resuelve los ejercicios del curso de Algoritmos en la app, gratis y con corrección automática.

Empezar a practicar