Shellsort

Shellsort fue desarrollado en 1.959 por Donald L. Shell. Es similar al algoritmo de inserción pero mucho más rápido, utiliza un espacio de trabajo grande (distancia entre elementos que es parametrizable) y su eficiencia depende de la secuencia de incrementos. Es uno de los más estudiados pero está en la parte trasera de los más rapidos.

 

Rendimiento – Complejidad
Mejor caso Ω
Peor caso O
Media Θ
Espacio
(n log n) (n log2 n) (n log2 n) O(1)

 

Cómo actúa:

Primero se divide el vector en partes iguales, procesa los elementos en saltos de la mitad del intervalo tratado, esto permite que los elementos se muevan rápidamente hacia sus posiciones finales, facilitando la clasificación cuando se utilizan incrementos más pequeños. Cuando el incremento alcanza 1, debe alcanzarlo, la clasificación es una clasificación de inserción simple. Tiene la ventaja del bajo consumo de memoria al no utilizar recursividad y usar únicamente el espacio del vector tratado.

 

Shellsort. Algoritmo de ordenación en Java
Shellsort. Ejemplo en Java

 

Rendimiento.

Estadística individual realizada con el mismo equipo y condiciones del resumen de estadísticas de ordenación.

 

 

Shellsort. Rendimiento estadística de 10 a 100mil elementosShellsort. Rendimiento estadística de 100mil a 1millón de elementos

 

Secuencia de incrementos.

Como dije anteriormente, la eficiencia de Shell depende de la secuencia de incrementos y se han propuesto muchos desde su publicación:

Año Autor Peor caso O( )
Espacio de trabajo
1.959 D.Shell n2 1, 3, 6, 12, 25, 50, 100, …
1.960 R. M. Frank y R. B.Lazarus n3/2 1, 2, 3, 4, 7, 14, 26, 51, 101, …
1.963

Thomas N. Hibbard

n3/2 1,3,7,15, 31, 63, 127, 255, … (2k – 1)
1.965 A.A. Papernov y G.V. StasevichA.A. Papernov Ordenación Shell sort n3/2

 

1, 3, 5, 9, 17, 33, 65, 129, 257, 513, 1025, … (2k + 1)

1.969

Vaughan R. Pratt

n (log n)2

 

1, 2, 3, 4, 6, 8, 9, 12, 16, 18, 24, 27, 32, … (2p3q)

1, 3, 7, 21, 48, 112, 336, 861, 1968, 4592, …

1.973

Donald Ervin Knuth

n3/2 1, 4, 13, 40, 121, …
1.982-6

R. Sedgewick

n4/3 1, 8, 23, 77, 281, 1073, 4193, 16577, . . . 4j+1 + 3 × 2j + 1
1.985

Janet Incerpi y R.Sedgewick

1 3, 7, 21, 48, 112, 336, 861, …
1.986 R. Sedgewick n4/3

1, 5, 19, 41, 109, 209, 505, 929,… 9(4k−1−2k1/2)+1,4k+1−6∗2k+1/2+1

1, 8, 23, 77, 281, 1073, 4193, … (4(n+1) + 3*2n + 1)

1.991

Gastón H. Gonnet y Ricardo Baeza

1, 2, 4, 9, 19, 41, 91, …

1.992 Naoyuki Tokuda

1, 4, 9, 20, 46, 103, 233, 525, 1182, …

(9k−4k) / (5∗4k−1)

2.000 Steven Pigeon

1, 2, 19, 103, 311, 691, 1321, 2309, …

1, 2, 4, 8, 21, 56, 149, 404, 1098, 2982, … round( 1 + e(n-2) )

2.001 Marcin Ciura 1, 4, 10, 23, 57, 132, 301, 701, 1750, …