Escolar Documentos
Profissional Documentos
Cultura Documentos
INGENIERIA DE SISTEMAS
CURSO:
ALGORITMOS Y ESTRUCURA
DE DATOS I
DOCENTE:
ROGER MANUEL SANCHEZ CHAVEZ
TEMA:
ALGORITMO DE ORDENAMIENTO SHELLSORT
INTEGRANTES:
BRIONES PRIETO FRANKI ELI
ARANA VARGAS
CUEVA ESTELA ALCIVIADES
RAMOS VASQUEZ RONAL IVAN
D
CICLO II-GRUPO B
INTRODUCION
El estudio de algoritmos de ordenamiento tiene una gran importancia dentro de la
Ciencia de la Computacin, pues una buena cantidad de los procesos realizados por
medios computacionales requieren que sus datos estn ordenados. Adems, el hecho de
almacenar los datos de manera ordenada permite implementar algoritmos de bsqueda
muy rpidos (por ejemplo: bsqueda binaria). Esta y muchas otras razones de fin
prctico impulsaron el estudio y la bsqueda de algoritmos de ordenamiento eficientes.
EXPLICACION GRAFICA
Veremos un ejemplo ordenando de menor a mayor (ascendentemente) la
siguiente lista de nmeros:
7, 3, 10, 1, 9, 8, 4
La lista tiene 7 elementos (de 0 a 6), con lo cual obtendremos un intervalo inicial de 3,
divisin entera de 7 entre 2 (7 div 2). Desde el elemento 3 se ordena la lista por
insercin, hacia la izquierda tomando los elementos de 3 en 3, y as hasta terminar de
recorrer la lista.
1er recorrido: intervalo 3, resultado de la divisin entera de 7 entre 2.
Desde el elemento 3. Elementos a ordenar: Se colocan los elementos ordenados por
7, 1
insercin
7
1
7 3 10 1 9 8 4
1 3 10 7 9 8 4
1 3 10 7 9 8 4
1 3 8 7 9 10 4
1 3 8 4 9 10 7
Inicio
grupo=[7, 3, 10, 1, 9, 8, 4]
Para( i=0; i<7; i++)
Para( i=h;i<7;i++)
v=k[i]
j=i;
mostar "h=grupo[g]"
fin
EJERCICIO 1
Supongamos que se desea ordenar los elementos que se encuentran en el arreglo
unidimensional A utilizando el mtodo de Shell. A: 15 67 08 16 44 27 12
35 56 21 13 28 60 36 07 10. Este algoritmo permite ordenar los elementos
de un arreglo unidimensional de menor a mayor utilizando el mtodo de Shell. A es un
arreglo unidimensional de N elementos.
package ordenamientoshell;
public class ascendente {
public static void main(String[] args) {
int arrayEntrada[]={15, 67, 8,16, 44, 27,12 ,35 , 56 , 21,13, 28, 60, 36,07,
10}; //Este es el array de elementos que vamos a ordenar
shellSort(arrayEntrada); //llamada al metodo shellSort
for (int i=0;i < arrayEntrada.length;i++){ //Este bucle imprime el contenido
del array
System.out.print(arrayEntrada[i]+" ");
}//fin del for
}//fin del main
public static void shellSort( int a[ ]){
for( int gap = a.length / 2; gap > 0; gap = gap == 2 ? 1 : (int) ( gap / 2.2 ) ){
for( int i = gap; i < a.length; i++ ){
int tmp = a[ i ];
int j;
for(j = i; j >= gap && tmp < a[ j - gap ] ; j -= gap ){
a[ j ] = a[ j - gap ];
}
a[ j ] = tmp;
}
}
}
EJERCICIO 2
Se desea crear un arreglo de n valores, el valor de n se ingresara por teclado y cada
valor del vector tambin, se mostrara el arreglo en forma ascendente.
package ordenamientoshell;
public class ordenar {
public static void main(String[] args) {
Scanner xd=new Scanner(System.in);
System.out.println("ingrese el numeo de elementos del arreglo");
int p=xd.nextInt();
int[] alf=new int[p];
System.out.println("ingrese los valores de su arreglo a ordenar");
for (int i = 0; i < alf.length; i++) {
alf[i]=xd.nextInt();
}
System.out.println("..............salia e datos");
shellSort (alf);
for (int i = 0; i < alf.length; i++) {
System.out.println(""+alf[i]);
}
}
public static void shellSort(int[] a){
for( int gap = a.length / 2; gap > 0; gap = gap == 2 ? 1 : (int) ( gap /
2.2 ) ){
for( int i = gap; i < a.length; i++ ){
int tmp = a[ i ];
int j;
for(j = i; j >= gap && tmp < a[ j - gap ] ; j -= gap ){
a[ j ] = a[ j - gap ];
}
a[ j ] = tmp;
}
}
}
}
CONCLUSIONES
Con el algoritmo de Shell la comparacin se hace con intervalos mayores a uno,
logrando con ello que la ordenacin sea ms rpida. Generalmente se toma como
intervalo inicial n div 2, siendo n la cantidad de elementos de la lista a ordenar, luego se
reduce los intervalos a la mitad hasta que el intervalo llegue a ser uno. Cuando la
ordenacin de la lista se hace con un intervalo de 1 el algoritmo se comporta como el
algoritmo de insercin, pero con la ventaja de que al tener una lista casi ordenada,
debido a los ordenamientos por intervalos anteriores, el ordenamiento se har ms
rpido.
BIBLIOGRAFIA
http://www.conoce3000.com/html/espaniol/Libros/PascalConFreePascal/Cap08-03Ordenamiento%20Shell%20(Shell%20sort).php
http://enrrike87.blogspot.pe/2011/06/metodos-de-ordenamiento-java_21.html
http://aprenderaprogramar.com/index.php?
option=com_content&view=article&id=287:como-escribir-programas-o-algoritmos-enpseudocodigo-ejemplos-ejercicios-resueltos-cu00135a&catid=28:curso-basesprogramacion-nivel-i&Itemid=59
http://estructura-de-datos-itsav.blogspot.pe/2012/03/613-shell-sort-ordenacion.html