Ordenamiento Shell
El Shell sort es una generalización del ordenamiento por inserción, teniendo en cuenta dos observaciones:
El ordenamiento por inserción es eficiente si la entrada está "casi ordenada".
El ordenamiento por inserción es ineficiente, en general, porque mueve los valores sólo una posición cada vez.
El algoritmo Shell sort mejora el ordenamiento por inserción comparando elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga "pasos más grandes" hacia su posición esperada. Los pasos múltiples sobre los datos se hacen con tamaños de espacio cada vez más pequeños. El último paso del Shell sort es un simple ordenamiento por inserción, pero para entonces, ya está garantizado que los datos del vector están casi ordenados.publicstatic void
shellSort(int[] a) {
for ( int increment = a.length / 2;
increment
> 0;
increment
= (increment == 2 ? 1 : (int) Math.round(increment / 2.2))) {
for (int i = increment; i
<>
for (int j = i; j
>= increment && a[j - increment] > a[j]; j
-= increment) {
int temp = a[j];
a[
j] = a[j - increment];
a[
j - increment] = temp;
}
}
}
No hay comentarios:
Publicar un comentario