Comb sort

En ciencias de la computación, el comb sort (comb=peine) es un algoritmo de ordenamiento relativamente simple diseñado por Wlodzimierz Dobosiewicz en 1980. Posteriormente fue redescubierto y popularizado por Stephen Lacey y Richard Box en un artículo publicado por la revista Byte en abril de 1991. El algoritmo comb sort mejora el algoritmo de ordenamiento de burbuja y rivaliza en velocidad con algoritmos más complejos como el Quicksort. La idea básica es eliminar tortugas, o pequeños valores cerca del final de la lista, ya que en el algoritmo de ordenamiento de burbuja esto reduce la velocidad de ordenamiento tremendamente. (Los conejos, grandes valores alrededor del inicio de la lista, no plantean un problema en el algoritmo de ordenamiento de burbuja.)

En el ordenamiento de burbuja, cuando dos elementos cualquiera se comparan, siempren tienen un espacio (distancia entre ellos) de 1. La idea básica del algoritmo comb sort es que el espacio pueda ser mucho mayor de uno. El ordenamiento Shell también se basa en esta idea, pero es una modificación del algoritmo de ordenamiento por inserción más que del algoritmo de ordenamiento de burbuja.

El espacio se inicia como la longitud de la lista a ordenar dividida por el factor de encogimiento (generalmente 1,3; véase debajo), y la lista se ordena con este valor (redondeado a la baja a un entero si es necesario) para el espacio. Después el espacio se divide por el factor de encogimiento de nuevo, la lista se ordena con este nuevo espacio, y el proceso se repite hasta que el espacio es 1. En este momento, el algoritmo comb sort continua usando un espacio de 1 hasta que la lista está completamente ordenada. La etapa final del ordenamiento es así equivalente al algoritmo de ordenamiento de burbuja, pero en este momento la mayoría de las tortugas ya han sido tratadas, de manera que un algoritmo de ordenamiento de burbuja será eficiente.

Factor de encogimiento

El factor de encogimiento tiene un gran efecto en la eficiencia del algoritmo comb sort. En el artículo original, los autores sugierieron 1,3 después de probar algunas listas aleatorias y encontrarlo generalmente el más efectivo. Un valor muy pequeño reduce la velocidad del algoritmo porque se deben hacer más comparaciones, mientras que un valor demasiado grande puede que no elimine suficientes tortugas para que sea práctico.

El texto describe una mejora del algoritmo comb sort usando el valor base como factor de encogimiento. También contiene una implementación en pseudocódigo con unas tablas de espacios predefinidos.

Other Languages
العربية: ترتيب المشط
čeština: Comb sort
Deutsch: Combsort
English: Comb sort
français: Tri à peigne
italiano: Comb sort
日本語: コムソート
português: Comb sort
српски / srpski: Comb sort
中文: 梳排序