Gnome sort ( eng. Gnome sort ) es un algoritmo de clasificación similar a la clasificación por inserciones , pero a diferencia de este último, antes de insertar en el lugar correcto, se produce una serie de intercambios, como en la clasificación de burbujas . El nombre proviene del supuesto comportamiento de los gnomos de jardín al clasificar una línea de macetas de jardín.
La clasificación enana se basa en la técnica utilizada por el gnomo de jardín holandés común ( tuinkabouter holandés ). Este es el método por el cual un gnomo de jardín clasifica una línea de macetas. Esencialmente, mira las macetas de jardín actuales y anteriores: si están en el orden correcto, avanza una maceta; de lo contrario, las intercambia y retrocede una maceta. Condiciones de contorno: si no hay bote anterior, se avanza; si no hay otro bote, está acabado. dick grun
El algoritmo es conceptualmente simple y no requiere bucles anidados. tiempo de trabajo En la práctica, el algoritmo puede ejecutarse tan rápido como la ordenación por inserción.
El algoritmo encuentra el primer lugar donde dos elementos vecinos están en el orden incorrecto y los intercambia. Aprovecha el hecho de que un intercambio puede producir un nuevo par en el orden incorrecto justo antes o después de los elementos intercambiados. No permite ordenar los elementos después de la posición actual, por lo que solo es necesario verificar la posición antes de los elementos reorganizados.
A continuación se muestra el pseudocódigo de clasificación . Esta es una versión optimizada que utiliza la variable j para permitir avanzar hasta donde se quedó antes de moverse hacia la izquierda, evitando iteraciones y comparaciones innecesarias:
Ejemplo:
Si queremos ordenar una matriz con elementos [4] [2] [7] [3] de mayor a menor, ocurrirá lo siguiente durante las iteraciones del bucle while:
Como resultado de la optimización de gnome, la clasificación se transforma naturalmente en clasificación por inserción . Cada vez que "gnomo" alcanza un nuevo número, todos los valores a la izquierda de "gnomo" ya están ordenados.
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 |