Algoritmo de Ordenamiento Shell
Algoritmo de Ordenamiento Shell
de O(n log2 n) en el peor caso. Esto es mejor que las O(n2) comparaciones requeridas por
El Shell sort es una generalización del ordenamiento por inserción, teniendo en cuenta dos
El ordenamiento por inserción es ineficiente, en general, porque mueve los valores sólo una
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
Descripción
El algoritmo Shell es una mejora de la ordenación por inserción, donde se van comparando
Es bastante adecuado para ordenar listas de tamaño moderado, debido a que su velocidad es
valores con los cuales trabaja, ordenándolos.El siguiente ejemplo muestra el proceso de
forma gráfica:
Considerando un valor pequeño que está inicialmente almacenado en el final del vector.
El Shell sort primero mueve los valores usando tamaños de espacio gigantes, de manera
que un valor pequeño se moverá bastantes posiciones hacia su posición final, con sólo unas
#include<iostream>
#include<conio.h>
int main(){
int Num;
cout<<"Ingrese dimension del arreglo : ";
cin>>Num;
LeerArreglo(Num);
Shell(Num);
cout<<endl;
EscribeArreglo(Num);
return 0;
}
cout<<"\t"<<Arreglo[i];
}
cout<<endl;
system("pause");
}
incremento=Numero/2;
while(incremento>0){
for(i=incremento+1;i<=Numero;i++){
j=i-incremento;
while(j>0){
if(Arreglo[j]>=Arreglo[j+incremento]){
aux = Arreglo[j];
Arreglo[j] = Arreglo[j+incremento];
Arreglo[j+incremento] = aux;
}
else{
j=0;
}
j=j-incremento;
}
}
incremento=incremento/2;
}
cout<<endl;