Heap sort ( ing. Heapsort , “Heap sort” [1] ) es un algoritmo de clasificación que funciona en el peor de los casos, en promedio y en el mejor de los casos (es decir, garantizado) para operaciones de clasificación de elementos. [2] La cantidad de memoria back-end utilizada no depende del tamaño de la matriz (es decir, ).
Se puede considerar como una mejora en la clasificación de burbujas , en la que un elemento flota ( min-heap )/se hunde ( max-heap ) en muchas rutas.
Heapsort fue propuesto por J. Williams en 1964. [una]
Heapsort utiliza un árbol de clasificación binario . Un árbol de clasificación es un árbol que cumple las siguientes condiciones:
Una estructura de datos conveniente para un árbol de clasificación es una matriz Arraytal que Array[0] es el elemento en la raíz y los hijos del elemento Array[i]son Array[2i+1]y Array[2i+2].
El algoritmo de clasificación constará de dos pasos principales:
1. Construya los elementos de la matriz en forma de árbol de clasificación :
en .
Este paso requiere cirugía.
2. Eliminaremos elementos de la raíz uno a la vez y reconstruiremos el árbol. Es decir, en el primer paso, intercambiamos Array[0]y Array[n-1]transformamos Array[0], Array[1], … , Array[n-2]en un árbol de clasificación. Luego reorganizamos Array[0]y Array[n-2]transformamos Array[0], Array[1], … , Array[n-3]en un árbol de clasificación. El proceso continúa hasta que solo queda un elemento en el árbol de clasificación. Entonces Array[0], Array[1], … , Array[n-1] es una sucesión ordenada.
Este paso requiere cirugía.
Ventajas
Defectos
O ( n ) la ordenación por fusión que consume memoria es más rápida ( con una constante más pequeña) y no se degrada con datos incorrectos.
Debido a la complejidad del algoritmo, la ganancia se obtiene solo para n grande . En n pequeño (hasta varios miles), Shellsort es más rápido .
El algoritmo de "ordenación en montón" se usa activamente en el kernel de Linux .
Algoritmos de clasificación | |
---|---|
Teoría | Complejidad O notación relación de orden Ordenar tipos sostenible Interno Externo |
Intercambio | |
Elección | |
inserciones | |
fusión | |
sin comparaciones | |
híbrido | |
Otro | |
poco práctico |