Algoritmo de Ordenamiento
Shell Sort
Yurgen Prado Lopez 191738
Luis Miguel Lozano Rodríguez 191478
Shell Sort
• El método de
ordenación Shell debe
su nombre a su inventor,
Donald Shell, y fue uno
de los primeros
algoritmos de
ordenamiento en romper
la barrera del tiempo
cuadrático.
Ejemplo
Existen varias formas de calcular el intervalo, lo cual puede
mejorar la efectividad del algoritmo.
Algoritmo de Shell Sort en Java
package analisisyalgoritmos; while(j>0){
import java.util.Scanner; if(Arreglo[j]>=Arreglo[j+incremento]){
public class AnalisisYAlgoritmos { aux = Arreglo[j];
public static void main (String[] args) { Arreglo[j] = Arreglo[j+incremento];
Arreglo[j+incremento] = aux;
Scanner teclado = new Scanner(System.in); }
int Arreglo[]=new int [20]; else{
int numero,i,j,k,incremento,aux; j=0;
System.out.print("Ingrese dimension del }
arreglo: "); j=j-incremento;
numero=teclado.nextInt(); }
for(i=1;i<=numero;i++){ }
System.out.print("A["+i+"]= "); incremento=incremento/2;
Arreglo[i]=teclado.nextInt(); }
} System.out.println("EL ARREGLO
incremento=numero/2; ORDENADO");
while(incremento>0){ for(i=1;i<=numero;i++){
for(i=incremento+1;i<=numero;i++){ System.out.print(" "+Arreglo[i]);
j=i-incremento; }
System.out.println("");
}
}
• Cualquier algoritmo de ordenación que
intercambia elementos adyacentes (como los
algoritmos burbuja, selección o inserción)
tiene un tiempo promedio de ejecución de
orden cuadrático (n2).
• El método Shell mejora este tiempo
comparando cada elemento con el que está a
un cierto número de posiciones llamado salto,
en lugar de compararlo con el que está justo a
su lado. Este salto es constante, y su valor
inicial es N/2