SlideShare a Scribd company logo
1 of 14
Download to read offline
Republica Bolivariana De Venezuela
Ministerio Del Poder Popular Para La Defensa
Universidad Nacional Experimental Politécnica De Las Fuerzas Armadas
Unefa-Núcleo Mérida
Catedra: Lenguaje de Programación II
ORDENACIÓN SHELL
Bachilleres:
Sánchez Rivas Ronald José. C.I.: V- 18.798.569.
Fernández Jean Carlos C.I.: V- 15,074,131
 La ordenación Shell debe el nombre su inventor Donald L.
Shell que lo publicó en 1959. Algunos libros de texto y
referencias antiguas le llaman ordenación "Shell-Metzner"
por Marlene Metzner Norton, pero según Metzner, "No
tengo nada que ver con el algoritmo de ordenamiento, y
mi nombre nunca debe adjuntarse a éste.
 Se suele denominar también ordenación por inserción con
incrementos decrecientes. Se considera que el método Shell
es una mejora de los métodos de inserción directa.
ORDENACIÓN SHELL
 En el álgoritmo de inserción, cada elemento se compara
con los elementos contiguos de su izquierda, uno tras otro.
Si el elemento a insertar es el más pequeño hay que
realizar muchas comparaciones antes de colocarlo en su
lugar definitivo.
 El algoritmo de Shell modifica los saltos contiguos
resultantes de las comparaciones por saltos de mayor
tamaño y con ello se consigue que la ordenación sea más
rápida. Generalmente se toma como salto inicial n/2
(siendo n el número de elementos), luego se reduce el
salto a la mitad en cada repetición hasta que el salto es de
tamaño 1.
ORDENACIÓN SHELL
 Los pasos a seguir para una lista de n
elementos son los siguientes:
1- Dividir la lista original en n/2 grupos de dos, considerando
un incremento o salto entre los elementos de n/2.
2- Clarificar cada grupo por separado, comparando las
parejas de elementos, y si no están ordenados se
intercambian.
Algoritmo de Shell
Los pasos a seguir para una lista de n elementos son los
siguientes:
3- Se divide la lista en la mitad de grupos (n/4), con un
incremento o salto entre los elementos también mitad (n/4),
y nuevamente se clasifica cada grupo por separado.
4- Así sucesivamente, se sigue dividiendo la lista en la mitad
de grupos que en el recorrido anterior con un incremento o
salto decreciente en la mitad que el salto anterior y luego
clasificando cada grupo por separado.
5- El algoritmo termina cuando se consigue que el tamaña del
salto es 1.
Algoritmo de Shell
Intervalo <= n/2
Mientras (intervalo>0) hacer
//para dividir la lista en grupos y clasificar cada grupo se anida este código.
Desde i <=(intervalo +1) hasta n hacer
J <= i-intervalo
Mientras (j>0) hacer
K<=j + intervalo
Si (a(j) <= a(k)) entonces
J <= -1
Sino
Intercambio (a(j), a(k));
J<=j- intervalo
Fin_si
Fin_mientras
Fin_desde
Por consiguiente, los recorridos por la lista
esta condicionados por el bucle,
En el código anterior se observa que se compara pares de
elementos indexados por j y k, (a[j] , a [k]), separados por un
salto, intervalo. Así, si n=8 el primer valor de intervalo =4, y los
índices i=5, j=1, k=6. los siguientes valores de los índices son
i=6, j=2, k=7, y así hasta recorrer la lista.
Para realizar un nuevo recorrido de la lista con la mitad de
grupos, el intervalo se hace la mitad:
Intervalo <= intervalo/2.
Así se repite los recorridos por la lista, mientras intervalo >0.
 Obtener las secuencias parciales del vector al aplicar
el método Shell para ordenar en orden creciente la
lista: 6 1 5 2 3 4 0.
 El número de elementos que tiene la lista es 6, por lo
que el salto inicial es 6/2 = 3.
Ejemplo: ordena una lista de elementos
siguiendo paso a paso el método de Shell.
Recorrido Salto Intercambios Lista
1 3 (6,2), (5,4), (6,0) 2 1 4 0 3 5 6
2 3 (2,0) 0 1 4 2 3 5 6
3 3 Ninguno 0 1 4 2 3 5 6
Salto 3/2=1
4 1 (4,2),(4,3) 0 1 2 3 4 5 6
5 1 Ninguno 0 1 2 3 4 5 6
La siguiente tabla muestra el número de recorridos realizados
en la lista con los saltos correspondiente.
Código C++ – Ordenamiento Shell
//Ordenamiento Shell
//Codificado por sAfOrAs
#include<iostream>
using namespace std;
#define largo 50
void ordenShell(int A[],int n)
{
int i, j, inc, temp;
for(inc = 1 ; inc<n;inc=inc*3+1);
while (inc > 0)
{
for (i=inc; i < n; i++)
{
j = i;
temp = A[i];
while ((j >= inc) && (A[j-inc] > temp))
{
A[j]=A[j- inc];
j = j - inc;
}
A[j] = temp;
}
inc/= 2;
}
}
void leeCadena(int cant,int n[])
{
int i;
for(i=0;i<cant;i++)
{
cout<<"Ingresa numero "<<i+1<<": ";
cin>>n[i];
}
}
void muestraCadena(int cant,int n[])
{
int i;
for(i=0;i<cant;i++)
{
cout<<n[i]<<endl;
}
}
Código C++ – Ordenamiento Shell
int main () {
int A[largo],n;
do{
cout<<"Cantidad de numeros a ingresar: ";cin>>n;
if(n<=0||n>largo)
cout<<"Debe ingresar un valor > a 0 y < a
"<<largo<<endl;
}while(n<=0||n>largo);
leeCadena(n,A);
ordenShell(A,n);
muestraCadena(n,A);
}
Código C++ – Ordenamiento Shell
Pantalla
 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.
Conclusiones

More Related Content

What's hot (19)

Ordenamiento c++
Ordenamiento c++Ordenamiento c++
Ordenamiento c++
 
Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datos
 
PILAS
PILASPILAS
PILAS
 
Bubble sort algcomp
Bubble sort algcompBubble sort algcomp
Bubble sort algcomp
 
conceptos de Punteros y Nodos
conceptos de Punteros y Nodosconceptos de Punteros y Nodos
conceptos de Punteros y Nodos
 
Estructura de Datos (LISTAS, COLAS, PILAS)
Estructura de Datos (LISTAS, COLAS, PILAS)Estructura de Datos (LISTAS, COLAS, PILAS)
Estructura de Datos (LISTAS, COLAS, PILAS)
 
Apuntadores y listas
Apuntadores y listasApuntadores y listas
Apuntadores y listas
 
Ordenamiento shell
Ordenamiento shellOrdenamiento shell
Ordenamiento shell
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
Colas
ColasColas
Colas
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserción
 
Sesion07- Estructuras de control (Oracle)
Sesion07- Estructuras de control (Oracle)Sesion07- Estructuras de control (Oracle)
Sesion07- Estructuras de control (Oracle)
 
Fila,pila y cola ..
Fila,pila y cola ..Fila,pila y cola ..
Fila,pila y cola ..
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colas
 
Listas
ListasListas
Listas
 
Estructura de un programa
Estructura de un programaEstructura de un programa
Estructura de un programa
 
Colas y listas generales
Colas y listas generalesColas y listas generales
Colas y listas generales
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 

Viewers also liked

Manual de word caceres ipiales caceres ipiales
Manual de word caceres ipiales caceres ipialesManual de word caceres ipiales caceres ipiales
Manual de word caceres ipiales caceres ipialeskeiiliinci
 
Partes de computador
Partes de computadorPartes de computador
Partes de computadorKATYSOLIZ
 
el embarazo en la unidad educativa santa isabel
el embarazo en la unidad educativa santa isabelel embarazo en la unidad educativa santa isabel
el embarazo en la unidad educativa santa isabelSebastian Lalvay
 
Informe viajes al exterior 02-12-14
Informe viajes al exterior 02-12-14Informe viajes al exterior 02-12-14
Informe viajes al exterior 02-12-14afipdocumentos
 
Clses de intereses simples y compuestas
Clses de intereses simples y compuestasClses de intereses simples y compuestas
Clses de intereses simples y compuestasKing Benavides
 
Ecología microbiana-aguas-potables
Ecología microbiana-aguas-potablesEcología microbiana-aguas-potables
Ecología microbiana-aguas-potablesLuis Antonio Amadeus
 
Presentation. de conceptos taller 3
Presentation. de conceptos taller 3Presentation. de conceptos taller 3
Presentation. de conceptos taller 3Lindsey Ramos Rivera
 
Proyecto ciencias Escuela Normal de Licenciatura en Educación Primaria
Proyecto ciencias Escuela Normal de Licenciatura en Educación Primaria Proyecto ciencias Escuela Normal de Licenciatura en Educación Primaria
Proyecto ciencias Escuela Normal de Licenciatura en Educación Primaria Rodrigo Ernesto Avilez Pech
 
Sistema operativo p31p 3c
Sistema operativo p31p 3cSistema operativo p31p 3c
Sistema operativo p31p 3cchynyz98
 
Presentación sociocultural
Presentación socioculturalPresentación sociocultural
Presentación socioculturalDiego Funhouse
 
Unidad no. 1 cultura ciudadana
Unidad no. 1 cultura ciudadanaUnidad no. 1 cultura ciudadana
Unidad no. 1 cultura ciudadanaRIMA2526
 
DEVOCION AL SAGRADO CORAZON DE JESUS CONDUCE A LA ADORACION EUCARISTICA
DEVOCION AL SAGRADO CORAZON DE JESUS CONDUCE A LA ADORACION EUCARISTICA DEVOCION AL SAGRADO CORAZON DE JESUS CONDUCE A LA ADORACION EUCARISTICA
DEVOCION AL SAGRADO CORAZON DE JESUS CONDUCE A LA ADORACION EUCARISTICA Gladysmorayma Creamer Berrios
 
Crea, así de fácil , tu Fan Page!
 Crea, así de fácil , tu Fan Page!  Crea, así de fácil , tu Fan Page!
Crea, así de fácil , tu Fan Page! Mari Luz Grande
 
ANTEPROYECTO DE INVESTIGACION
ANTEPROYECTO DE INVESTIGACIONANTEPROYECTO DE INVESTIGACION
ANTEPROYECTO DE INVESTIGACIONdviddc
 

Viewers also liked (20)

Manual de word caceres ipiales caceres ipiales
Manual de word caceres ipiales caceres ipialesManual de word caceres ipiales caceres ipiales
Manual de word caceres ipiales caceres ipiales
 
Florcarina flores
Florcarina floresFlorcarina flores
Florcarina flores
 
Partes de computador
Partes de computadorPartes de computador
Partes de computador
 
el embarazo en la unidad educativa santa isabel
el embarazo en la unidad educativa santa isabelel embarazo en la unidad educativa santa isabel
el embarazo en la unidad educativa santa isabel
 
Informe viajes al exterior 02-12-14
Informe viajes al exterior 02-12-14Informe viajes al exterior 02-12-14
Informe viajes al exterior 02-12-14
 
Ppt semana 2
Ppt semana 2Ppt semana 2
Ppt semana 2
 
Clses de intereses simples y compuestas
Clses de intereses simples y compuestasClses de intereses simples y compuestas
Clses de intereses simples y compuestas
 
Ecología microbiana-aguas-potables
Ecología microbiana-aguas-potablesEcología microbiana-aguas-potables
Ecología microbiana-aguas-potables
 
Presentation. de conceptos taller 3
Presentation. de conceptos taller 3Presentation. de conceptos taller 3
Presentation. de conceptos taller 3
 
LECTIO DIVINA EVANGELIO Mc 12., 35-37
LECTIO DIVINA  EVANGELIO Mc 12., 35-37 LECTIO DIVINA  EVANGELIO Mc 12., 35-37
LECTIO DIVINA EVANGELIO Mc 12., 35-37
 
Proyecto ciencias Escuela Normal de Licenciatura en Educación Primaria
Proyecto ciencias Escuela Normal de Licenciatura en Educación Primaria Proyecto ciencias Escuela Normal de Licenciatura en Educación Primaria
Proyecto ciencias Escuela Normal de Licenciatura en Educación Primaria
 
Reacciones
ReaccionesReacciones
Reacciones
 
evangelio de hoy jn 17
 evangelio de hoy jn 17 evangelio de hoy jn 17
evangelio de hoy jn 17
 
Sistema operativo p31p 3c
Sistema operativo p31p 3cSistema operativo p31p 3c
Sistema operativo p31p 3c
 
Presentación sociocultural
Presentación socioculturalPresentación sociocultural
Presentación sociocultural
 
Unidad no. 1 cultura ciudadana
Unidad no. 1 cultura ciudadanaUnidad no. 1 cultura ciudadana
Unidad no. 1 cultura ciudadana
 
DEVOCION AL SAGRADO CORAZON DE JESUS CONDUCE A LA ADORACION EUCARISTICA
DEVOCION AL SAGRADO CORAZON DE JESUS CONDUCE A LA ADORACION EUCARISTICA DEVOCION AL SAGRADO CORAZON DE JESUS CONDUCE A LA ADORACION EUCARISTICA
DEVOCION AL SAGRADO CORAZON DE JESUS CONDUCE A LA ADORACION EUCARISTICA
 
Actividad de PowerPoint
Actividad de PowerPointActividad de PowerPoint
Actividad de PowerPoint
 
Crea, así de fácil , tu Fan Page!
 Crea, así de fácil , tu Fan Page!  Crea, así de fácil , tu Fan Page!
Crea, así de fácil , tu Fan Page!
 
ANTEPROYECTO DE INVESTIGACION
ANTEPROYECTO DE INVESTIGACIONANTEPROYECTO DE INVESTIGACION
ANTEPROYECTO DE INVESTIGACION
 

Similar to Expshell (20)

Ordenamiento en C++
Ordenamiento en C++Ordenamiento en C++
Ordenamiento en C++
 
Presentacion
PresentacionPresentacion
Presentacion
 
1_Metodos.doc
1_Metodos.doc1_Metodos.doc
1_Metodos.doc
 
Informe insercion
Informe insercionInforme insercion
Informe insercion
 
metodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfmetodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdf
 
Ordenamientos de vectores
Ordenamientos de vectoresOrdenamientos de vectores
Ordenamientos de vectores
 
Algoritmos de ordenamiento
Algoritmos de ordenamientoAlgoritmos de ordenamiento
Algoritmos de ordenamiento
 
2.1.4 ShellSort.pptx
2.1.4 ShellSort.pptx2.1.4 ShellSort.pptx
2.1.4 ShellSort.pptx
 
Metodos de odenamiento de vctores
Metodos de odenamiento de vctoresMetodos de odenamiento de vctores
Metodos de odenamiento de vctores
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
datos de ordenamiento
datos de ordenamientodatos de ordenamiento
datos de ordenamiento
 
Lista Doblemente Enlazada
Lista Doblemente EnlazadaLista Doblemente Enlazada
Lista Doblemente Enlazada
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamiento
 
Bus99
Bus99Bus99
Bus99
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
 
Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Unidad 1 1
Unidad 1   1Unidad 1   1
Unidad 1 1
 
S3-SCBC.pptx
S3-SCBC.pptxS3-SCBC.pptx
S3-SCBC.pptx
 
S3-SCBC.pptx
S3-SCBC.pptxS3-SCBC.pptx
S3-SCBC.pptx
 

Expshell

  • 1. Republica Bolivariana De Venezuela Ministerio Del Poder Popular Para La Defensa Universidad Nacional Experimental Politécnica De Las Fuerzas Armadas Unefa-Núcleo Mérida Catedra: Lenguaje de Programación II ORDENACIÓN SHELL Bachilleres: Sánchez Rivas Ronald José. C.I.: V- 18.798.569. Fernández Jean Carlos C.I.: V- 15,074,131
  • 2.  La ordenación Shell debe el nombre su inventor Donald L. Shell que lo publicó en 1959. Algunos libros de texto y referencias antiguas le llaman ordenación "Shell-Metzner" por Marlene Metzner Norton, pero según Metzner, "No tengo nada que ver con el algoritmo de ordenamiento, y mi nombre nunca debe adjuntarse a éste.  Se suele denominar también ordenación por inserción con incrementos decrecientes. Se considera que el método Shell es una mejora de los métodos de inserción directa. ORDENACIÓN SHELL
  • 3.  En el álgoritmo de inserción, cada elemento se compara con los elementos contiguos de su izquierda, uno tras otro. Si el elemento a insertar es el más pequeño hay que realizar muchas comparaciones antes de colocarlo en su lugar definitivo.  El algoritmo de Shell modifica los saltos contiguos resultantes de las comparaciones por saltos de mayor tamaño y con ello se consigue que la ordenación sea más rápida. Generalmente se toma como salto inicial n/2 (siendo n el número de elementos), luego se reduce el salto a la mitad en cada repetición hasta que el salto es de tamaño 1. ORDENACIÓN SHELL
  • 4.  Los pasos a seguir para una lista de n elementos son los siguientes: 1- Dividir la lista original en n/2 grupos de dos, considerando un incremento o salto entre los elementos de n/2. 2- Clarificar cada grupo por separado, comparando las parejas de elementos, y si no están ordenados se intercambian. Algoritmo de Shell
  • 5. Los pasos a seguir para una lista de n elementos son los siguientes: 3- Se divide la lista en la mitad de grupos (n/4), con un incremento o salto entre los elementos también mitad (n/4), y nuevamente se clasifica cada grupo por separado. 4- Así sucesivamente, se sigue dividiendo la lista en la mitad de grupos que en el recorrido anterior con un incremento o salto decreciente en la mitad que el salto anterior y luego clasificando cada grupo por separado. 5- El algoritmo termina cuando se consigue que el tamaña del salto es 1. Algoritmo de Shell
  • 6. Intervalo <= n/2 Mientras (intervalo>0) hacer //para dividir la lista en grupos y clasificar cada grupo se anida este código. Desde i <=(intervalo +1) hasta n hacer J <= i-intervalo Mientras (j>0) hacer K<=j + intervalo Si (a(j) <= a(k)) entonces J <= -1 Sino Intercambio (a(j), a(k)); J<=j- intervalo Fin_si Fin_mientras Fin_desde Por consiguiente, los recorridos por la lista esta condicionados por el bucle,
  • 7. En el código anterior se observa que se compara pares de elementos indexados por j y k, (a[j] , a [k]), separados por un salto, intervalo. Así, si n=8 el primer valor de intervalo =4, y los índices i=5, j=1, k=6. los siguientes valores de los índices son i=6, j=2, k=7, y así hasta recorrer la lista. Para realizar un nuevo recorrido de la lista con la mitad de grupos, el intervalo se hace la mitad: Intervalo <= intervalo/2. Así se repite los recorridos por la lista, mientras intervalo >0.
  • 8.  Obtener las secuencias parciales del vector al aplicar el método Shell para ordenar en orden creciente la lista: 6 1 5 2 3 4 0.  El número de elementos que tiene la lista es 6, por lo que el salto inicial es 6/2 = 3. Ejemplo: ordena una lista de elementos siguiendo paso a paso el método de Shell.
  • 9. Recorrido Salto Intercambios Lista 1 3 (6,2), (5,4), (6,0) 2 1 4 0 3 5 6 2 3 (2,0) 0 1 4 2 3 5 6 3 3 Ninguno 0 1 4 2 3 5 6 Salto 3/2=1 4 1 (4,2),(4,3) 0 1 2 3 4 5 6 5 1 Ninguno 0 1 2 3 4 5 6 La siguiente tabla muestra el número de recorridos realizados en la lista con los saltos correspondiente.
  • 10. Código C++ – Ordenamiento Shell //Ordenamiento Shell //Codificado por sAfOrAs #include<iostream> using namespace std; #define largo 50 void ordenShell(int A[],int n) { int i, j, inc, temp; for(inc = 1 ; inc<n;inc=inc*3+1); while (inc > 0) { for (i=inc; i < n; i++) { j = i; temp = A[i]; while ((j >= inc) && (A[j-inc] > temp)) { A[j]=A[j- inc]; j = j - inc; } A[j] = temp; } inc/= 2; } }
  • 11. void leeCadena(int cant,int n[]) { int i; for(i=0;i<cant;i++) { cout<<"Ingresa numero "<<i+1<<": "; cin>>n[i]; } } void muestraCadena(int cant,int n[]) { int i; for(i=0;i<cant;i++) { cout<<n[i]<<endl; } } Código C++ – Ordenamiento Shell
  • 12. int main () { int A[largo],n; do{ cout<<"Cantidad de numeros a ingresar: ";cin>>n; if(n<=0||n>largo) cout<<"Debe ingresar un valor > a 0 y < a "<<largo<<endl; }while(n<=0||n>largo); leeCadena(n,A); ordenShell(A,n); muestraCadena(n,A); } Código C++ – Ordenamiento Shell
  • 14.  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. Conclusiones