📄️ Fundamentos del ordenamiento: estabilidad, adaptabilidad y comparaciones
El ordenamiento (sorting) es el proceso de organizar los elementos de una colección (arreglo, lista, etc.) de acuerdo con un criterio de comparación (por ejemplo, de menor a mayor). Los algoritmos de ordenamiento se evalúan según varias propiedades fundamentales:
📄️ Bubble Sort
Bubble Sort es uno de los algoritmos de ordenamiento más sencillos. Su nombre proviene del hecho de que los elementos "grandes" van "burbujeando" hacia el final de la lista en cada pasada.
📄️ Selection Sort
Selection Sort es un algoritmo de ordenamiento simple que trabaja seleccionando el elemento más pequeño (o más grande, según el criterio) en cada iteración y colocándolo en su posición correcta.
📄️ Insertion Sort
Insertion Sort es un algoritmo de ordenamiento simple y eficiente para listas pequeñas o parcialmente ordenadas. Su funcionamiento se asemeja a la forma en que una persona organiza cartas en su mano: toma un elemento y lo coloca en su posición correcta respecto a los que ya están ordenados.
📄️ Merge Sort
Merge Sort es un algoritmo de ordenamiento eficiente basado en el paradigma Divide y Vencerás (Divide and Conquer). Se divide recursivamente la lista en mitades hasta obtener sublistas de un solo elemento, y luego se fusionan en orden ascendente.
📄️ Quick Sort
Quick Sort es un algoritmo de ordenamiento eficiente basado en el paradigma de Divide y Vencerás, como Merge Sort, pero con una ventaja significativa: puede ejecutarse en memoria sin espacio extra (es in-place).
📄️ Heap Sort
Heap Sort es un algoritmo de ordenamiento basado en la estructura de datos heap binario (montículo). Utiliza un Max-Heap (o Min-Heap, según el orden requerido) para organizar los datos y ordenarlos de manera eficiente.
📄️ Counting Sort
Counting Sort es un algoritmo de ordenamiento no basado en comparación, diseñado para ordenar enteros en un rango conocido. Se basa en contar la cantidad de ocurrencias de cada valor, y luego usar esta información para reconstruir el arreglo ordenado.
📄️ Radix Sort
Radix Sort es un algoritmo de ordenamiento no basado en comparación que ordena enteros procesando dígito por dígito (de menor a mayor posición, o viceversa), normalmente usando Counting Sort como subrutina estable.
📄️ Bucket Sort
Bucket Sort es un algoritmo de ordenamiento no basado en comparación directa global, sino en distribuir los elementos en "cubetas" (buckets) y luego ordenarlos individualmente, normalmente con un algoritmo estable (como Insertion Sort o incluso recursivamente con Bucket Sort).