En 1980, Wlodzimierz Dobosiewicz propuso este algoritmo en su breve artículo "An Efficient Variation of Bubble Sort", Information Processing Letters, vol. 11, num. 1, 1980. En él escribió literalmente: "Bubble sort can be improved in yet another way, which is similar to Shell’s version of the insertion sort." ("La ordenación por burbuja se puede mejorar de otra manera adicional, que es similar a la versión de Shell de la ordenación por inserción").
Posteriormente fue redescubierto y popularizado por Stephen Lacey y Richard Box en un artículo publicado por la revista Byte en abril de 1991.
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 CombSort 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.
Representación animada del algoritmo :
La elección del factor de descuento es crucial para la eficacia de este algoritmo. En general , se necesita un factor de reducción de entre 1,25 y 1,33. La animación de arriba utiliza 1.3 como el factor de reducción .
Use este algoritmo para resolver el pequeño conjunto de la página anterior :
La complejidad de este algoritmo es muy difícil de calcular. En general se considera que, en el mejor de los casos , es lineal ( O ( n)) , y que, en el caso peor es Θ(n2). En caso medio sería en O ( n log n ).
La aplicación Javascript a continuación evalúa el número de intercambios y comparaciones requeridas para el algoritmo para ordenar una lista . Elija el modo de generación de la serie para ordenar , el factor de reducción , el color de la curva y haga clic en " buscar ". Hasta cinco curvas se pueden visualizar en el mismo gráfico.
En el caso de los datos generados al azar, de aplicar el maquillaje hasta diez pases a las comparaciones y se mueve a la media.
Número de términos | Gaps | Paso | Comparaciones | Intercambios | Suma |
---|---|---|---|---|---|
0 | 0 | 0 |
Número de términos | Gaps | Paso | Comparaciones | Intercambios | Suma |
---|---|---|---|---|---|
0 | 0 | 0 |
Número de términos | Gaps | Paso | Comparaciones | Intercambios | Suma |
---|---|---|---|---|---|
0 | 0 | 0 |
Número de términos | Gaps | Paso | Comparaciones | Intercambios | Suma |
---|---|---|---|---|---|
0 | 0 | 0 |
Número de términos | Gaps | Paso | Comparaciones | Intercambios | Suma |
---|---|---|---|---|---|
0 | 0 | 0 |