Topic outline
-
Programación IV - Presencial
Ing. Ciberseguridad
Guía de la asignatura
Guía de la asignaturaManual del estudiante
Manual del estudianteHorario
HorarioLineamientos
Lineamientos
-
Ordenamiento, búsquedas y ordenamiento
-
Introducción
El estudio de los algoritmos de ordenamiento y búsqueda constituye un componente esencial en la formación en ciencias de la computación, ya que permite comprender cómo se organizan y localizan datos de manera eficiente. Los métodos básicos de ordenamiento, como Bubble Sort, Selection Sort e Insertion Sort, aunque simples en su estructura, proporcionan una base sólida para analizar conceptos como complejidad temporal, complejidad espacial, estabilidad y costo computacional. Estos fundamentos permiten evaluar cómo crece el número de operaciones a medida que aumenta el volumen de información y facilitan la comparación entre distintas estrategias algorítmicas.
En el ámbito de la ciberseguridad, estos conceptos adquieren especial relevancia debido a la necesidad de procesar grandes volúmenes de registros, eventos de red y transacciones en tiempo real. La correcta selección de algoritmos impacta directamente en la velocidad de detección de amenazas, la correlación de incidentes y la capacidad de respuesta ante ataques. Por ello, comprender los criterios técnicos de selección algorítmica y su aplicación práctica en sistemas de monitoreo resulta fundamental para diseñar soluciones escalables, eficientes y seguras.
Algoritmos de ordenamiento
Los algoritmos de ordenamiento son procedimientos que organizan un conjunto de datos según un criterio específico, como orden ascendente, descendente o por prioridad. Su objetivo es facilitar el acceso, análisis y procesamiento eficiente de la información dentro de un sistema computacional.
En ciberseguridad, se aplican para organizar logs, eventos y alertas por fecha, severidad o dirección IP. Esto permite detectar patrones de ataque, correlacionar incidentes y mejorar la rapidez en la respuesta ante amenazas.
Costo computacional
El costo computacional de un algoritmo es una medida de los recursos que se requieren para llevar a cabo una tarea específica en un sistema computacional. Estos recursos pueden incluir tiempo de procesamiento, cantidad de memoria utilizada y consumo energético. Su eficiencia depende del costo computacional, es decir, del tiempo y memoria que requieren para ejecutarse según el tamaño del conjunto de datos.
En ciberseguridad, permiten ordenar logs y alertas por fecha o severidad, facilitando la detección de amenazas. Un bajo costo computacional es clave en sistemas que procesan grandes volúmenes de eventos en tiempo real.
-
2. Ordenamiento, búsquedas y ordenamiento
El ordenamiento y la búsqueda son operaciones esenciales en ciencias de la computación. Ordenar consiste en organizar datos según un criterio determinado, mientras que buscar implica localizar un elemento dentro de una colección. Ambos procesos están estrechamente relacionados, ya que ciertos algoritmos de búsqueda eficientes, como la búsqueda binaria, requieren que los datos estén previamente ordenados para funcionar correctamente (Cormen et al., 2009). Esta relación demuestra que la organización de la información no solo mejora la claridad, sino también el rendimiento computacional.
En ciberseguridad, donde se procesan grandes volúmenes de datos en tiempo real, el ordenamiento adquiere una relevancia estratégica. Plataformas SIEM como Splunk Enterprise o IBM QRadar generan millones de registros provenientes de distintos dispositivos, aplicaciones y servicios de red. Sin una adecuada organización, estos datos pueden volverse difíciles de analizar y las amenazas podrían pasar desapercibidas.
Ordenar los registros por fecha, dirección IP, usuario o tipo de evento permite identificar patrones sospechosos, como múltiples intentos fallidos de autenticación en un periodo corto. Además, facilita la correlación de eventos, ya que muchos ataques no se detectan por un único registro, sino por la relación entre varios sucesos aparentemente aislados.
En el análisis forense digital, el orden cronológico es fundamental para reconstruir la línea de tiempo de un incidente, determinar su origen y evaluar su impacto. Una correcta organización de la información mejora la detección de amenazas, reduce el tiempo de respuesta ante incidentes y fortalece la toma de decisiones, convirtiéndose en un elemento clave para la seguridad informática moderna.
2.1. Algoritmos de ordenamiento básicos
Los básicos son métodos sencillos diseñados para organizar datos según un criterio específico, como orden ascendente, descendente o por prioridad. Se consideran básicos debido a su lógica simple y fácil implementación, lo que los convierte en herramientas ideales para introducir conceptos fundamentales del análisis y diseño de algoritmos. Su estructura clara permite comprender paso a paso cómo se comparan e intercambian los elementos dentro de una lista.
Entre los más conocidos se encuentran Bubble Sort, Selection Sort e Insertion Sort. Aunque no son los más eficientes cuando se trabaja con grandes volúmenes de datos, resultan esenciales para entender conceptos como la complejidad temporal y espacial, la cantidad de comparaciones e intercambios, y la estabilidad del algoritmo. Su análisis permite estudiar los casos mejor, peor y promedio, y observar cómo aumenta el costo computacional a medida que crece el tamaño de la entrada.
En conjuntos de datos pequeños o casi ordenados, estos algoritmos pueden ser prácticos y suficientes. Además, constituyen una base conceptual sólida para comprender técnicas de ordenamiento más avanzadas y eficientes, facilitando la transición hacia métodos con mejor rendimiento en aplicaciones reales.
2.1.1. Bubble Sort
Bubble Sort (Ordenamiento de Burbuja) compara elementos adyacentes e intercambia sus posiciones si están en el orden incorrecto. Este proceso se repite hasta que no se requieran más intercambios (Sedgewick & Wayne, 2011).
Utilizado principalmente con fines educativos y en conjuntos de datos pequeños debido a su simplicidad y facilidad de implementación. Permite comprender claramente el funcionamiento de comparaciones e intercambios entre elementos adyacentes, así como conceptos básicos como iteraciones y complejidad temporal. Además, es un algoritmo estable y trabaja “in place”, sin requerir memoria adicional significativa.
No obstante, su complejidad O(n²) en el peor y promedio de los casos lo hace ineficiente para grandes volúmenes de datos, por lo que no se emplea en sistemas de gran escala.
En ciberseguridad, este tipo de enfoque puede aplicarse para ordenar un pequeño grupo de alertas por nivel de riesgo o clasificar un conjunto limitado de direcciones IP según la cantidad de intentos fallidos de acceso, especialmente cuando el volumen de datos no es elevado y el análisis debe realizarse de forma rápida y comprensible. Por ejemplo, en entornos educativos, laboratorios de práctica o sistemas de monitoreo simples, resulta útil priorizar eventos sospechosos sin recurrir a algoritmos complejos.
En este tipo de escenarios limitados, donde la claridad del proceso y la facilidad de implementación son más relevantes que la eficiencia a gran escala, Bubble Sort puede cumplir adecuadamente su propósito. Su funcionamiento paso a paso facilita la comprensión del ordenamiento aplicado y permite verificar visualmente cómo se reorganizan los datos, lo que resulta valioso para tareas básicas de análisis y aprendizaje.
Complejidad:
- Tiempo: O(n²): Significa que el tiempo de ejecución crece de forma cuadrática en función del número de elementos (n). A medida que aumenta el tamaño del conjunto de datos, el número de comparaciones e intercambios se incrementa aproximadamente en proporción a n × n. Por ello, cuando la cantidad de datos es grande, el algoritmo se vuelve poco eficiente.
- Espacio: O(1): Indica que el algoritmo utiliza una cantidad constante de memoria adicional, independientemente del tamaño de la entrada. Es decir, no necesita estructuras auxiliares significativas para funcionar, ya que realiza el ordenamiento directamente sobre la misma lista de datos.
- Es estable: Un algoritmo de ordenamiento estable conserva el orden relativo de los elementos que tienen el mismo valor. Esto significa que, si dos elementos son iguales según el criterio de comparación, mantendrán la misma posición relativa que tenían antes de ser ordenados, lo cual es importante cuando los datos contienen múltiples atributos.
En la figura 1 se muestra un ejemplo de la ejecución del método Bubble sort.
Figura 1
Ejemplo de ejecución de Bubble Sort

Nota. Creación de autor Patricio Coba En cada pasada, el valor más grande “burbujea” hacia el final de la lista. En la Tabla 1 se muestra la explicación de la aplicación del método Bubble Sort con los datos iniciales 5,8,3,7,6.
Tabla 1
Explicación de la aplicación del método Bubble Sort
Pasada
Comparaciones realizadas
Intercambios
Resultado al finalizar la pasada
1
(5–8 ✔), (8–3 ✘), (8–7 ✘), (8–6 ✘)
8↔3, 8↔7, 8↔6
5, 3, 7, 6, 8
2
(5–3 ✘), (5–7 ✔), (7–6 ✘)
5↔3, 7↔6
3, 5, 6, 7, 8
3
(3–5 ✔), (5–6 ✔)
Ninguno
3, 5, 6, 7, 8
Nota. Creación de autor Patricio Coba ✔ = orden correcto ✘ = requiere intercambio
2.1.2. Selection Sort
Selection Sort (Ordenamiento por selección) es un algoritmo que recorre repetidamente la lista para identificar el elemento mínimo y colocarlo en su posición correcta en cada iteración (Cormen et al., 2009). En cada paso, divide la lista en una parte ordenada y otra desordenada, reduciendo progresivamente esta última.
Es especialmente útil cuando se desea minimizar el número de intercambios, ya que realiza como máximo un intercambio por cada posición.
En ciberseguridad, puede aplicarse para clasificar incidentes según su nivel de criticidad, priorizando primero los eventos más graves para su análisis y respuesta inmediata.
Complejidad
- Tiempo: O(n²) El tiempo de ejecución crece de manera cuadrática respecto al número de elementos (n). Esto significa que, para cada posición del arreglo, se realiza un recorrido adicional para encontrar el elemento mínimo, generando aproximadamente n² comparaciones en el peor y promedio de los casos. Por ello, no es eficiente para grandes volúmenes de datos.
- Espacio: O(1) Utiliza una cantidad constante de memoria adicional. El ordenamiento se realiza sobre la misma estructura de datos, sin requerir arreglos auxiliares significativos.
- No es estable por defecto. En su forma clásica, puede alterar el orden relativo de elementos iguales debido a los intercambios realizados al colocar el mínimo en su posición correspondiente.
En la figura 2 se muestra un ejemplo de la ejecución del método Selection sort.
Figura 2
Ejemplo práctico Selection Sort

Nota. Creación de autor Patricio Coba Se divide la lista en dos partes: una parte ordenada (al inicio) y otra desordenada (el resto). En cada iteración, busca el elemento más pequeño de la parte desordenada y lo intercambia con el primer elemento de esa sección.
En la Tabla 2 se muestra la explicación de la aplicación del método Selection Sort.
Tabla 2
Explicación de la aplicación del método Selection Sort
Iteración
Sublista analizada
Elemento mínimo
Acción realizada
Resultado
1
5, 8, 3, 7, 6
3
Se intercambia 3 con 5
3, 8, 5, 7, 6
2
8, 5, 7, 6
5
Se intercambia 5 con 8
3, 5, 8, 7, 6
3
8, 7, 6
6
Se intercambia 6 con 8
3, 5, 6, 7, 8
4
7, 8
7
No se requiere intercambio
3, 5, 6, 7, 8
Nota. Creación de autor Patricio Coba 2.1.3. Insertion Sort
Insertion Sort (Ordenamiento por inserción) construye la lista ordenada de manera progresiva, tomando cada elemento e insertándolo en la posición correcta dentro de la parte previamente ordenada (Sedgewick & Wayne, 2011). Su funcionamiento es similar a la forma en que se ordenan cartas en la mano, comparando e insertando cada nuevo valor donde corresponde.
Es especialmente eficiente en listas pequeñas o casi ordenadas, ya que requiere pocos desplazamientos cuando los elementos ya están próximos a su posición final.
En ciberseguridad, puede aplicarse en la actualización incremental de registros de acceso ordenados por hora, donde los nuevos eventos se agregan continuamente a una lista ya estructurada.
Complejidad:
- Mejor caso: O(n), cuando la lista ya está ordenada.
- Peor caso: O(n²), cuando está en orden inverso.
- Espacio: O(1), utiliza memoria adicional constante.
- Es estable, conserva el orden relativo de elementos iguales
En la figura 3 se muestra el funcionamiento de Insertion Sort.
Figura 3
Ejemplo de la aplicación del método Insertion Sort

Nota. Creación de autor Patricio Coba Insertion Sort construye la lista ordenada de izquierda a derecha. En cada iteración toma un elemento y lo inserta en la posición correcta dentro de la parte ya ordenada. En la tabla 3 se presenta la explicación del proceso de Insertion Sort.
Tabla 3
Explicación de Insertion Sort
Iteración
Elemento (key)
Parte ordenada antes
Proceso realizado
Resultado
1
8
[5]
8 se compara con 5. Como 8 > 5, no se mueve.
5, 8, 3, 7, 6
2
3
[5, 8]
3 se compara con 8 (se desplaza). Luego con 5 (se desplaza). Se inserta en la primera posición.
3, 5, 8, 7, 6
3
7
[3, 5, 8]
7 se compara con 8 (se desplaza). Luego con 5 (se detiene). Se inserta después de 5.
3, 5, 7, 8, 6
4
6
[3, 5, 7, 8]
6 se compara con 8 (se desplaza) y con 7 (se desplaza). Se detiene en 5. Se inserta después de 5.
Nota. Creación de autor Patricio Coba Aprende más
Métodos de ordenamiento. Página web donde se describe diferentes métodos de ordenamiento con código y su respectiva explicación ¡Accede aquí!
2.1.4. Estabilidad y costo computacional
La estabilidad de un algoritmo de ordenamiento se refiere a su capacidad para mantener el orden relativo de los elementos que tienen el mismo valor clave. Es decir, si dos registros poseen el mismo criterio de comparación, un algoritmo estable conservará su posición original entre ellos después de ordenar. Esta característica es especialmente importante cuando se realizan ordenamientos múltiples (por ejemplo, primero por fecha y luego por prioridad) o cuando se trabaja con bases de datos y registros donde existen varios atributos asociados.
El hace referencia a los recursos que consume un algoritmo, principalmente tiempo de ejecución (complejidad temporal) y memoria utilizada (complejidad espacial). Se expresa comúnmente mediante la notación Big-O, que describe cómo crece el número de operaciones a medida que aumenta el tamaño de los datos de entrada. Por ejemplo, algoritmos como Bubble Sort, Selection Sort e Insertion Sort tienen en general una complejidad O(n²) en el peor caso, lo que los hace poco eficientes para grandes volúmenes de información.
En conjunto, la estabilidad y el costo computacional son criterios clave para seleccionar un método de ordenamiento adecuado, especialmente en sistemas donde el rendimiento, la escalabilidad y la integridad del orden de los datos son factores críticos. (Cormen et al., 2009). La tabla 4 muestra la comparativo de los métodos revisados.
Tabla 4
Comparativa de métodos de ordenamiento
Algoritmo
Mejor Caso
Peor Caso
Espacio
Estable
Aplicación típica
Bubble Sort
O(n)
O(n²)
O(1)
Sí
Datos pequeños
Selection Sort
O(n²)
O(n²)
O(1)
No
Pocos intercambios
Insertion Sort
O(n)
O(n²)
O(1)
Sí
Datos casi ordenados
Nota. Creación de autor Patricio Coba 2.1.5. Uso en ordenamiento de registros y logs de seguridad"
En sistemas SIEM (Security Information and Event Management), los registros deben ordenarse por fecha, IP o nivel de riesgo. Algoritmos simples pueden emplearse en subconjuntos pequeños antes de aplicar técnicas más avanzadas. Ordenar logs facilita la identificación de patrones de ataque y la reconstrucción cronológica de incidentes (Stallings, 2018).
2.2. Análisis algorítmico aplicado a ciberseguridad
El análisis algorítmico permite determinar la eficiencia de los sistemas de monitoreo de seguridad, donde el volumen de datos puede crecer exponencialmente debido al aumento constante de dispositivos conectados, usuarios y servicios digitales. Evaluar la complejidad temporal y espacial de los algoritmos utilizados permite anticipar cuellos de botella, optimizar tiempos de respuesta y garantizar que la detección de amenazas se realice en tiempo real. Sin este análisis, el rendimiento del sistema podría degradarse rápidamente ante cargas elevadas de información.
2.2.1. Comparación de algoritmos de búsqueda y ordenamiento
La búsqueda lineal tiene complejidad O(n), ya que en el peor de los casos debe recorrer todos los elementos hasta encontrar el objetivo o determinar que no existe. En contraste, la búsqueda binaria presenta una complejidad O(log n), pues divide el conjunto de datos en mitades sucesivas, reduciendo drásticamente el número de comparaciones necesarias, siempre que los datos estén previamente ordenados (Cormen et al., 2009). Por tanto, invertir tiempo en ordenar la información puede optimizar de manera significativa el rendimiento de consultas frecuentes, especialmente en sistemas donde se realizan múltiples búsquedas sobre grandes volúmenes de datos.
2.2.2. Medición empírica de eficiencia
Además del análisis teórico basado en modelos matemáticos y notación Big-O, es fundamental realizar pruebas empíricas que midan los tiempos reales de ejecución utilizando conjuntos de datos representativos. Estas pruebas permiten observar el comportamiento del algoritmo en entornos prácticos, considerando factores como arquitectura del hardware, uso de memoria y concurrencia de procesos. En ciberseguridad, esto implica analizar millones de eventos simulados o registros históricos para evaluar el rendimiento bajo condiciones de carga real y validar su escalabilidad. Como señalan Cormen et al. (2009), el análisis experimental complementa el estudio teórico al ofrecer evidencia concreta del desempeño en escenarios aplicados.
Aprende más
Comparación empírica del número de operaciones de diferentes algoritmos de ordenamiento. Documento del proyecto de Tesis que analiza los diferentes algoritmos de búsqueda y experimientos realizados ¡Accede aquí!
2.2.3. Impacto del algoritmo en sistemas de monitoreo
Un algoritmo ineficiente puede retrasar la detección de ataques en tiempo real, especialmente cuando se procesan grandes volúmenes de tráfico y eventos simultáneos. En entornos críticos, incluso pequeños retrasos pueden impedir la contención oportuna de una amenaza. Los sistemas IDS (Intrusion Detection System) e IPS (Intrusion Prevention System) requieren tiempos de respuesta mínimos para analizar datos y generar alertas casi de inmediato.
Si los algoritmos de clasificación o búsqueda no son eficientes, pueden generarse cuellos de botella que aumenten la latencia, afecten la disponibilidad del servicio y reduzcan la efectividad del monitoreo continuo. Como señala Stallings (2018), la eficiencia computacional es esencial para garantizar la operación confiable de los sistemas de seguridad.
2.2.4. Criterios técnicos de selección algorítmica
Los principales criterios para seleccionar un algoritmo adecuado incluyen varios factores técnicos que influyen directamente en el rendimiento y la sostenibilidad del sistema:
- Tamaño del conjunto de datos: A mayor volumen de información, más relevante se vuelve la complejidad temporal del algoritmo.
- Frecuencia de consultas: Si las búsquedas u ordenamientos se realizan de forma constante, conviene invertir en algoritmos más eficientes que reduzcan el costo acumulado de operaciones repetidas.
- Requerimientos de memoria: Algunos algoritmos requieren espacio adicional significativo, lo cual puede ser una limitación en sistemas con recursos restringidos.
- Necesidad de estabilidad: En aplicaciones donde se manejan múltiples criterios de ordenamiento (por ejemplo, fecha y nivel de severidad), la estabilidad del algoritmo puede ser determinante.
- Tiempo de respuesta en entornos críticos: En sistemas que operan en tiempo real, la latencia debe mantenerse al mínimo para evitar.
En la ciberseguridad, se prioriza especialmente la eficiencia temporal y la capacidad de escalabilidad, ya que los sistemas deben adaptarse al crecimiento constante del tráfico y de los eventos generados por infraestructuras digitales cada vez más complejas. Como señalan Cormen et al. (2009), la elección de un algoritmo debe basarse en un análisis cuidadoso del contexto de aplicación y de los recursos disponibles, no únicamente en su desempeño teórico.
Profundiza más
Infografía sobre los métodos de ordenamiento Bubble Sort, Selection Sor y Insertion Sort que incluye un ejemplo, ventajas, desventajas, conclusiones y recomendaciones y su aplicación en Ciberseguridad. ¡Accede aquí!
Profundiza más
Gráfico que muestra una medición empírica de la eficiencia de los algoritmos de ordenamiento estudiados (Bubble, Selection, Insertion) ¡Accede aquí!
-
-
Actividades
-
Make attempts: 1
-
Laboratorio de Contenido: Bubble Sort en Python Laboratorio de Contenido: Selection Sort en Python Laboratorio de Contenido: Insertion Sort en Python Estudio de Caso 1: Ordenamiento de Registros y Logs de Seguridad en un Centro de Monitoreo Estudio de Caso 2: Medición Empírica de Eficiencia de Algoritmos de Ordenamiento en Logs de Seguridad Documento complementario Clase 2 en PDF
-