stringtranslate.com

Ordenación de gnomos

Gnome sort (apodado stupid sort ) es una variación del algoritmo de ordenamiento por inserción que no utiliza bucles anidados. Gnome sort fue propuesto originalmente por el informático iraní Hamid Sarbazi-Azad (profesor de Ciencias Informáticas e Ingeniería en la Universidad Tecnológica Sharif ) [1] en 2000. El ordenamiento se llamó primero stupid sort [2] (que no debe confundirse con bogosort ), y luego fue descrito por Dick Grune y llamado gnome sort . [3]

Gnome sort realiza al menos tantas comparaciones como el ordenamiento por inserción y tiene las mismas características de tiempo de ejecución asintótica . Gnome sort funciona construyendo una lista ordenada elemento por elemento, colocando cada elemento en el lugar adecuado en una serie de intercambios. El tiempo de ejecución promedio es O ( n 2 ) pero tiende a O ( n ) si la lista está inicialmente casi ordenada. [4] [nota 1]

Dick Grune describió el método de clasificación con la siguiente historia: [3]

El método Gnome Sort se basa en la técnica utilizada por el gnomo de jardín holandés estándar (en holandés: tuinkabouter).
Así es como un gnomo de jardín clasifica una fila de macetas .
Básicamente, mira la maceta que está a su lado y la anterior; si están en el orden correcto, avanza una maceta hacia adelante; de ​​lo contrario, las intercambia y retrocede una maceta.
Condiciones límite: si no hay ninguna maceta anterior, avanza; si no hay ninguna maceta a su lado, ya está.

—  "Gnome Sort: el algoritmo de ordenación más simple". Dickgrune.com

Pseudocódigo

Aquí hay un pseudocódigo para la ordenación de gnome utilizando una matriz basada en cero :

 procedimiento gnomeSort(a[]): posición := 0 mientras pos < longitud(a): si (pos == 0 o a[pos] >= a[pos-1]): posición := posición + 1 De lo contrario : intercambia a[pos] y a[pos-1] posición := posición - 1

Ejemplo

Dada una matriz no ordenada, a = [5, 3, 2, 4], la ordenación de gnome realiza los siguientes pasos durante el bucle while. La posición actual se resalta en negrita y se indica como un valor de la variable pos.

Notas

  1. ^ Casi ordenado significa que cada elemento de la lista no está lejos de su posición adecuada (no más lejos que una pequeña distancia constante).

Referencias

  1. ^ Hamid, Sarbazi-Azad. «Página de perfil de Hamid Sarbazi-Azad». Archivado desde el original el 16 de octubre de 2018. Consultado el 16 de octubre de 2018 .
  2. ^ Sarbazi-Azad, Hamid (2 de octubre de 2000). «Stupid Sort: A new sorting algorithm» (PDF) . Boletín informativo (599). Departamento de Ciencias de la Computación, Universidad de Glasgow: 4. Archivado (PDF) desde el original el 7 de marzo de 2012. Consultado el 25 de noviembre de 2014 .
  3. ^ ab "Gnome Sort - El algoritmo de ordenamiento más simple". Dickgrune.com . 2000-10-02. Archivado desde el original el 2017-08-31 . Consultado el 2017-07-20 .
  4. ^ Paul E. Black. "gnome sort". Diccionario de algoritmos y estructuras de datos . Instituto Nacional de Estándares y Tecnología de Estados Unidos. Archivado desde el original el 11 de agosto de 2011. Consultado el 20 de agosto de 2011 .

Enlaces externos