🧠 Guía Visual y Didáctica: Búsqueda, Ordenación y Complejidad Algorítmica
📌 ¿Qué es la Complejidad Algorítmica?
La complejidad algorítmica mide los recursos necesarios (tiempo o espacio) para que un algoritmo resuelva un problema. Se expresa mediante notación Big O (O grande), donde:
- O(1) → Constante: No cambia con el tamaño del dato.
- O(n) → Lineal: Crece con el número de elementos.
- O(log n) → Logarítmica: Muy eficiente en estructuras ordenadas.
- O(n²) → Cuadrática: Poco eficiente en grandes volúmenes.
🔎 Tipos de Complejidad:
- Logarítmica: Mejora con estructuras ordenadas.
- Lineal: Cada dato se procesa una vez.
- Cuadrática: Se repiten operaciones anidadas (dobles bucles).
- Polinómica / Exponencial: Poco práctica en grandes conjuntos.
🔍 Algoritmos de Búsqueda
🟨 Secuencial
- Simple pero lenta.
- Recorre todos los elementos uno a uno hasta encontrar el buscado.
- Coste medio: O(n)
- Variantes: con y sin centinela.
🟩 Binaria o Dicotómica
- Mucho más eficiente.
- Requiere estructura ordenada y acceso aleatorio.
- Divide el array en mitades y descarta la que no contiene el dato.
- Coste: O(log n)
🌳 En Estructuras Dinámicas: Búsqueda por niveles
- Árbol binario ordenado → búsqueda por niveles.
- Búsqueda en profundidad (DFS) o en anchura (BFS).
🧭 Algoritmos de Caminos Mínimos
- Dijkstra: Ruta más corta entre nodos (usado en mapas, redes).
- Floyd-Warshall: Todas las rutas entre todos los nodos.
- Se usan estructuras de grafos.
🧮 Búsqueda Mediante Transformación de Claves (Hashing)
- Hash Abierto y Cerrado: Manejan colisiones de manera eficiente.
- Aumentan velocidad en estructuras como tablas hash.
- Cada dato es transformado a un índice hash, con complejidad casi constante.
🔃 Algoritmos de Ordenación
🔹 Selección
- Selecciona el menor elemento y lo pone al principio.
- Coste: O(n²)
🔹 Inserción
- Inserta cada nuevo valor en la posición correcta.
- Bueno para listas casi ordenadas.
🔹 Burbuja
- Intercambia elementos adyacentes hasta ordenar.
- Coste elevado: O(n²)
🧠 Ordenamientos Más Avanzados
🟦 Shell Sort
- Compara elementos lejanos.
- Mejora progresiva con cada iteración.
🟧 Merge Sort (Ordenamiento por mezcla)
- Divide y conquista. Requiere memoria adicional.
- Muy eficiente: O(n log n)
🟩 Quick Sort (El más rápido)
- Divide por un pivote, y ordena ambos lados.
- Promedio: O(n log n)
🟨 Heap Sort
- Usa una estructura heap para ordenar sin recursividad.
- Buen rendimiento sin memoria auxiliar.
📊 Especiales para Datos Enteros
🔸 Counting Sort
- Para datos numéricos pequeños.
- Muy rápido, pero no sirve para todos los tipos de datos.
🔸 Radix Sort
- Ordena según los dígitos (de menor a mayor peso).
- Útil para códigos, identificadores, DNI, etc.
📘 Conclusión
Elegir el algoritmo correcto marca la diferencia entre eficiencia y colapso computacional. No todos sirven para lo mismo:
- ¿Datos ordenados? Usa búsqueda binaria.
- ¿Muchos números pequeños? Aplica counting o radix sort.
- ¿Velocidad sin importar orden inicial? Prueba quick sort.
🔗
Y si te ha gustado, compártelo en redes y suscríbete a nuestro canal de YouTube para contenidos visuales y explicaciones paso a paso.


Deja un comentario