Ordenamiento Gnomo | Gnome Sort

Repo: https://github.com/umarquez/100DaysOfC0D3/tree/master/22-gnome-sort

Esta técnica consiste en recorrer la lista de elementos comparando cada uno con el valor que lo precede, si el anterior es mayor se intercambian y continuamos comparando a partir de la posición pasada.

En resumen, es una especie de ordenamiento burbuja que, una vez que encuentra un valor desordenado, vuelve sobre la lista hasta encontrar su ubicación para nuevamente volver a recorrerla hacia adelante, en forma de zig-zag.

Ejemplo

Debemos ordenar los siguientes elemento:

Primer paso

Comparamos el primer par de valores y los intercambiamos si se encontraran en desorden.

Paso dos

Debido a que ha habido un intercambio debemos volver una posición, si esta no tuviera predecesor, avanzamos una; seguimos comparando hasta encontrar un nuevo valor fuera de lugar.

Paso 3

Repetimos el ciclo por cada valor fuera de lugar encontrado.

Sabremos que la lista ha sido ordenada una vez que lleguemos el último elemento y este no requiera ser intercambiado.

Implementación en Go