Algoritmos de ordenación y análisis de eficiencia
La importancia de los algoritmos de ordenación no se discute.
¡Tienen gran importancia dentro de la Ciencia de la Computación!, dado que una buena cantidad de los procesos realizados por medios computacionales requieren que sus datos estén ordenados.
Por lo tanto, en este post quiero compartir un material que resume diversos métodos de ordenación (estudiados ampliamente) y el análisis de su complejidad, tema clave para los programadores que aspiran transitar hacia las “grandes ligas”.
Dado un conjunto de n elementos a1, a2,..., an y una relación de orden total (≤) sobre ellos, el problema de la ordenación consiste en encontrar una permutación de esos elementos ordenada de forma creciente.
Aunque tanto el tipo y tamaño de los elementos como la “estructura” y el dispositivo en donde se encuentran almacenados puede influir en el método que utilicemos para ordenarlos, a efectos de la explicación que presenta el material compartido, simplemente, se utiliza un vector (arreglo simple, unidimensional) de números enteros.
Type a = Array [1..n] of integer;
Los métodos para los que encontrarás algoritmos y el análisis de su complejidad son los siguientes:
- Ordenación por Inserción
- Ordenación por Selección
- Ordenación Burbuja
- Ordenación por Mezcla (Mergesort)
- Ordenación mediante Montículos (Heapsort)
- Ordenación Rápida de Hoare (Quicksort)
- Ordenación por Incrementos (Shellsort)
- Otros algoritmos de ordenación:
- Ordenación por Cubetas (Binsort)
- Ordenación por Residuos (Radix)
Post relacionados: