SlideShare a Scribd company logo
1 of 20
MÉTODOS DE ORDENAMIENTO
Introducción
Los métodos de ordenamiento nos permiten, organizar la
información contenida en vectores o matrices con valores
asignados manual o aleatoriamente.
Veremos los métodos mas utilizados, analizando la cantidad de
comparaciones que suceden, el tiempo que demora y revisando
el código, escrito en Java, de cada algoritmo.
Método Burbuja
El método de la burbuja es uno de los mas simples, es tan fácil como
comparar todos los elementos de una lista contra todos, si se cumple que uno
es mayor o menor a otro, entonces los intercambia de posición.
Se denomina burbuja debido a que los valores más pequeños
«burbujean» gradualmente (suben) hacia la cima o parte superior del array de
modo similar a como suben las burbujas en el agua, mientras que los valores
mayores se hunden en la parte inferior del array.
Método Burbuja Simple
▪ La burbuja mas simple de todas es la que compara todos con todos,
generando comparaciones extras, por ejemplo, no tiene sentido que se
compare con sigo mismo o que se compare con los valores anteriores a el,
ya que supuestamente, ya están ordenados.
▪ Por ejemplo, imaginemos que tenemos los siguientes valores:
Lo que haría una burbuja simple, seria comenzar recorriendo los valores
de izq. A derecha, comenzando por el 5. Lo compara con el 6, con el 1,
con el 0 y con el 3, si es mayor o menor (dependiendo si el orden es
ascendiente o descendiente) se intercambian de posición. Luego
continua con el siguiente, con el 6, y lo compara con todos los elementos
de la lista, esperando ver si se cumple o no la misma condición que con
el primer elemento. Así, sucesivamente, hasta el ultimo elemento de la
lista.
5 6 1 0 3
Estructura En JAVA
for (i=0; i<n; i++)
{
for (j=i+1; j<n; j++)
{
if(V[i]>V[j])
{
aux =V[i];
V[i] =V[j];
V[j] = aux;
}
}
}
Ejemplo:
50 20 40 80 30
20 50 40 80 30
20 40 50 80 30
20 40 50 80 30
20 40 50 30 80
▪ Elementos (A = 50, 20, 40, 80, 30), donde se introduce una variable
interruptor para detectar si se ha producido intercambio en la pasada.
▪ Pasada 0
Intercambio 50 y 20
Intercambio 50 y 40
50 y 80 ordenados
Intercambio 80 y 30
Elemento mayor es
80
interruptor = TRUE
▪ Pasada 1
20 y 40 ordenados
40 y 50 ordenados
Se intercambian 50 y 30
•50 y 80 elementos
mayores y ordenados
• interruptor = TRUE
20 40 50 30 80
20 40 50 30 80
20 40 50 30 80
20 40 30 50 80
20 40 30 50 80
20 30 40 50 80
20 30 40 50 80
▪ Pasada 2.- Solo se hacen dos comparaciones.
20 y 40 ordenados
Se intercambian 40 y 30
interruptor = TRUE
 Pasada 3.- Se hace una única comparación de 20 y 30, y no se produce
intercambio:
20 y 30 ordenados
Lista ordenada
interruptor = FALSE
20 30 40 50 80
Método Selección
Pasada 0.
Seleccionar 21
Intercambiar 21 y
A[0]
51 21 39 80 39
▪ Los métodos de ordenación por selección se basan en dos principios básicos:
Seleccionar el elemento más pequeño (o más grande) del arreglo. Colocarlo en la
posición más baja (o más alta) del arreglo. A diferencia del método de la burbuja, en
este método el elemento más pequeño (o más grande) es el que se coloca en la
posición final que le corresponde.
▪ Consideremos un array A con 5 valores enteros 51, 21, 39, 80, 36:
A[0] A[1] A[2] A[3] A[4]
Pasada 0
21 51 39 80 36
Pasada 1
Pasada 1.
Seleccionar 36
Intercambiar 36 y
A[1]
21 36 39 80
Pasada 2
Pasada 2.
Seleccionar 39
Intercambiar 39 y
A[2]
21 36 80 51
Pasada 3
Pasada 3.
Seleccionar 51
Intercambiar 51 y
A[3]
21 36 39 51 80 Lista ordenada
Estructura en JAVA
▪ for (i=0; i<n; i++)
{
imin=i;
for (j=i+1; j<n; j++)
{
if(V[j]<V[imin])
imin=j;
}
aux =V[i];
V[i] =V[imin];
V[imin] = aux;
}
Método Inserción
▪ El método de ordenación por inserción es similar al proceso típico de ordenar tarjetas
de nombres (cartas de una baraja) por orden alfabético, que consiste en insertar un
nombre en su posición correcta dentro de una lista o archivo que ya está ordenado.
▪ Así el proceso en el caso de la lista de enteros A = 50, 20, 40, 80, 30.
50 Se comienza por el 50
Procesar 20 50
20 Se inserta 20 en la posición 0
50 se mueve a posición 1
Procesar 40
Procesar 80
Procesar 30
50
20 40
Se inserta 40 en la posición 1
Se mueve 50 a posición 2
50
20 40 80 El elemento 80 está bien
ordenado
50
20 40 80
30 Se inserta 30 en posición 1
Se desplaza a la derecha la
sublista derecha
Estructura en JAVA
for(i=1; i<n; i++) {
temp =V[i];
Izq = 0;
Der = i-1;
while(Izq <= Der){
Medio = (Izq+Der)/2;
if (temp <V[Medio])
Der = Medio - 1;
else
Izq = Medio + 1;
}
for (j=i-1; j>=Izq; j--){
V[j+1]=V[j];
}
V[Izq] = temp;
}
Método Shell
▪ El nombre se debe a su inventor, D. L. Shell. 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.
▪ 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.
74, 14, 21, 44, 38, 97, 11, 78, 65, 88, 30
Se debe empezar con k=n/2 , siendo n el número de elementos de arreglo, y
utilizando siempre la división entera.... después iremos variando k haciéndolo
más pequeño mediante sucesivas divisiones por 2, hasta llegar a k=1. Pero
vamos a ello... En nuestro ejemplo, n=11 (porque hay 11 elementos). Así que
k=n/2=11/2=5
Empezamos con k=5. Así pues, vamos a dividir nuestro arreglo original en 5
sub-arreglo, en los cuales, sus elementos estarán separados por 5 lugares
del arreglo original (el salto o gap es 5).
1.- Tomamos el primer elemento (el 74) contamos 5 lugares y tomamos
también otro elemento (el 97) volvemos a contar 5 y tomamos otro (el
30) y acabamos porque se nos acaba el arreglo. El primer sub-arreglo con
k=5 es el formado por 74, 97 y 30.
74 , 14, 21, 44, 38, 97 , 11, 78, 65, 88, 30
Ejemplo
Ahora, ordenaremos los elementos del sub-arreglo (rojo) pero sólo
entre ellos, utilizando el algoritmo de Inserción directa.
74, 97, 30
30 , 14, 21, 44, 38, 74 , 11, 78, 65, 88, 97
El 30, un elemento relativamente pequeño se ha ido hacia el principio y el
97 hacia el final.
Formemos ahora otro sub-arreglo con salto k=5... partiendo del segundo
elemento (el 14) y contando 5 (tomamos también el 11) y hasta ahí,
porque se acaba el arreglo.
30 , 14 , 21, 44, 38, 74 , 11 , 78, 65, 88, 97
Vamos a ordenarlos el 11 primero y el 14 después.
30 , 11 , 21, 44, 38, 74 , 14 , 78, 65, 88, 97
30 , 11 , 21, 44, 38, 74 , 14 , 78, 65, 88, 97
Ahora a por otro el 21 y el 78
30 , 11 , 21, 44, 38, 74 , 14 , 78, 65, 88, 97
Están en orden entre ellos, así que se quedan como están.
Ahora le toca al sub-arreglo formado por el 44 y el 65
30 , 11 , 21, 44, 38, 74 , 14 , 78, 65, 88, 97
Que también están en orden entre ellos.
y finalmente el 38 y el 88, que también están en orden.
30 , 11 , 21, 44, 38, 74 , 14 , 78, 65, 88, 97
Aún no hemos terminado de ordenarlos.
Nuestra k valía 5, así que ahora k←k/2=5/2=2, nuestra nueva k vale 2.
Repetimos todo el desarrollo anterior, pero ahora nos saldrán 2 sub-
arreglo cuyos elementos están separados por 2 lugares.
Tomamos el primer elemento (el 30) contamos 2 lugares y tomamos
también otro elemento (el 21) volvemos a contar 2 y tomamos otro
(el 38), volvemos a contar y ahora tomamos (el 14), seguimos
contado y tomamos (el 65), seguimos contando y tomamos (el 97) y
acabamos porque se nos acaba el arreglo. Y posteriormente se
forma el según sub-arreglo que empieza con el 11.
30 , 11 , 21, 44, 38, 74 , 14 , 78, 65, 88, 97
Se ordena (primero los rojos), con el método de inserción:
14 , 11 , 21, 44, 30, 74 , 38 , 78, 65, 88, 97
Finalmente ordenamos los negros, pero estos ya están ordenados:
14 , 11 , 21, 44, 30, 74 , 38 , 78, 65, 88, 97
▪ Finalmente, calculamos un nuevo k dividiendo el que tenemos entre 2.
k←k/2=2/2=1 Hemos llegado a k=1. Cuando k es 1 sólo podemos obtener 1
sub-arreglo cuyos elementos están separados 1 posición: el propio arreglo
original. Dicho de otra manera... cuando k es 1, el algoritmo de Shell se
comporta exactamente igual que el de inserción directa sobre todo el arreglo.
14 , 11 , 21, 44, 30, 74 , 38 , 78, 65, 88, 97
▪ El método de inserción directa se comporta tanto mejor cuanto más cerca está
cada elemento de su sitio definitivo. Finalmente, el arreglo queda de ésta
manera:
11, 14, 21, 30, 38, 44, 65, 74, 78, 88, 97
▪ Cada elemento descolocado ha tenido que moverse pocos lugares.
Muchos de ellos ni siquiera se han movido.
Estructura en JAVA
void shellSort(int a[], int h)
{
int i;
while (h > 0)
{ for (i = h-1; i<n; i++)
{
int B = a[i];
int j = i;
for (j = i; (j >= h) && (a[j - h] > B); j -=h)
{ a[j] = a[j -h];}
a[j] = B;
}
h = h / 2;
}
}

More Related Content

Similar to metodosdeordenamiento.pptx

Jflambert lyada - ayudantia matematicas discretas
Jflambert   lyada - ayudantia matematicas discretasJflambert   lyada - ayudantia matematicas discretas
Jflambert lyada - ayudantia matematicas discretas
Francisco Lambert Obediente
 
Jflambert lyada - ayudantia ordenamiento y teo maestro
Jflambert   lyada - ayudantia ordenamiento y teo maestroJflambert   lyada - ayudantia ordenamiento y teo maestro
Jflambert lyada - ayudantia ordenamiento y teo maestro
Francisco Lambert Obediente
 
Algoritmos de ordenamiento
Algoritmos de ordenamientoAlgoritmos de ordenamiento
Algoritmos de ordenamiento
Orlando Torres
 
Algoritmos de ordenamineto y busqueda
Algoritmos de ordenamineto y busquedaAlgoritmos de ordenamineto y busqueda
Algoritmos de ordenamineto y busqueda
Cesar Gonzalez
 
array
arrayarray
array
mario
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
memorales_IUE
 

Similar to metodosdeordenamiento.pptx (20)

Jflambert lyada - ayudantia matematicas discretas
Jflambert   lyada - ayudantia matematicas discretasJflambert   lyada - ayudantia matematicas discretas
Jflambert lyada - ayudantia matematicas discretas
 
Jflambert lyada - ayudantia ordenamiento y teo maestro
Jflambert   lyada - ayudantia ordenamiento y teo maestroJflambert   lyada - ayudantia ordenamiento y teo maestro
Jflambert lyada - ayudantia ordenamiento y teo maestro
 
Programación dinámica presentación
Programación dinámica presentaciónProgramación dinámica presentación
Programación dinámica presentación
 
Algoritmos de ordenamiento
Algoritmos de ordenamientoAlgoritmos de ordenamiento
Algoritmos de ordenamiento
 
Informe ordenamiento
Informe ordenamientoInforme ordenamiento
Informe ordenamiento
 
Ordenamiento
OrdenamientoOrdenamiento
Ordenamiento
 
Algoritmos de ordenamineto y busqueda
Algoritmos de ordenamineto y busquedaAlgoritmos de ordenamineto y busqueda
Algoritmos de ordenamineto y busqueda
 
Presentacion
PresentacionPresentacion
Presentacion
 
Algoritmos ordenación.pptx
Algoritmos ordenación.pptxAlgoritmos ordenación.pptx
Algoritmos ordenación.pptx
 
Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)
Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)
Informe técnico - Unidad 5 Métodos de ordenamiento (Rubí Veronica)
 
expo de metodos de busqueda.pptx
expo de metodos de busqueda.pptxexpo de metodos de busqueda.pptx
expo de metodos de busqueda.pptx
 
array
arrayarray
array
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
metodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdfmetodos-de-ordenamiento.pdf
metodos-de-ordenamiento.pdf
 
EXPRESIONES ALGEBRAICAS.pptx
EXPRESIONES ALGEBRAICAS.pptxEXPRESIONES ALGEBRAICAS.pptx
EXPRESIONES ALGEBRAICAS.pptx
 
Ordenamiento
OrdenamientoOrdenamiento
Ordenamiento
 
Analisis Numerico
Analisis NumericoAnalisis Numerico
Analisis Numerico
 
Metodo_de_Burbuja.pptx
Metodo_de_Burbuja.pptxMetodo_de_Burbuja.pptx
Metodo_de_Burbuja.pptx
 
Ordenamiento en C++
Ordenamiento en C++Ordenamiento en C++
Ordenamiento en C++
 
Informe insercion
Informe insercionInforme insercion
Informe insercion
 

Recently uploaded

INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
evercoyla
 
sistema de CLORACIÓN DE AGUA POTABLE gst
sistema de CLORACIÓN DE AGUA POTABLE gstsistema de CLORACIÓN DE AGUA POTABLE gst
sistema de CLORACIÓN DE AGUA POTABLE gst
DavidRojas870673
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
gustavoiashalom
 

Recently uploaded (20)

INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCD
 
SESION 02-DENSIDAD DE POBLACION Y DEMANDA DE AGUA (19-03-2024).pdf
SESION 02-DENSIDAD DE POBLACION Y DEMANDA DE AGUA (19-03-2024).pdfSESION 02-DENSIDAD DE POBLACION Y DEMANDA DE AGUA (19-03-2024).pdf
SESION 02-DENSIDAD DE POBLACION Y DEMANDA DE AGUA (19-03-2024).pdf
 
Six Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processSix Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo process
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docx
 
Análisis de Costos y Presupuestos CAPECO
Análisis de Costos y Presupuestos CAPECOAnálisis de Costos y Presupuestos CAPECO
Análisis de Costos y Presupuestos CAPECO
 
libro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operacioneslibro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operaciones
 
Presentacion de la ganaderia en la región
Presentacion de la ganaderia en la regiónPresentacion de la ganaderia en la región
Presentacion de la ganaderia en la región
 
422382393-Curso-de-Tableros-Electricos.pptx
422382393-Curso-de-Tableros-Electricos.pptx422382393-Curso-de-Tableros-Electricos.pptx
422382393-Curso-de-Tableros-Electricos.pptx
 
Sistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptxSistemas de Ecuaciones no lineales-1.pptx
Sistemas de Ecuaciones no lineales-1.pptx
 
sistema de CLORACIÓN DE AGUA POTABLE gst
sistema de CLORACIÓN DE AGUA POTABLE gstsistema de CLORACIÓN DE AGUA POTABLE gst
sistema de CLORACIÓN DE AGUA POTABLE gst
 
2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica2. Cristaloquimica. ingenieria geologica
2. Cristaloquimica. ingenieria geologica
 
CI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdf
CI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdfCI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdf
CI164 Materiales de Construcción 202401 - Sesión 03 Propiedades No Mecánicas.pdf
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
 
Matrices Matemáticos universitario pptx
Matrices  Matemáticos universitario pptxMatrices  Matemáticos universitario pptx
Matrices Matemáticos universitario pptx
 
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf  PARA TRABAJO SEGUROATS-FORMATO cara.pdf  PARA TRABAJO SEGURO
ATS-FORMATO cara.pdf PARA TRABAJO SEGURO
 
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
“Análisis comparativo de viscosidad entre los fluidos de yogurt natural, acei...
 
ingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptxingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptx
 
FUNCION DE ESTADO EN LA TERMODINAMICA.pdf
FUNCION DE ESTADO EN LA TERMODINAMICA.pdfFUNCION DE ESTADO EN LA TERMODINAMICA.pdf
FUNCION DE ESTADO EN LA TERMODINAMICA.pdf
 

metodosdeordenamiento.pptx

  • 2. Introducción Los métodos de ordenamiento nos permiten, organizar la información contenida en vectores o matrices con valores asignados manual o aleatoriamente. Veremos los métodos mas utilizados, analizando la cantidad de comparaciones que suceden, el tiempo que demora y revisando el código, escrito en Java, de cada algoritmo.
  • 3. Método Burbuja El método de la burbuja es uno de los mas simples, es tan fácil como comparar todos los elementos de una lista contra todos, si se cumple que uno es mayor o menor a otro, entonces los intercambia de posición. Se denomina burbuja debido a que los valores más pequeños «burbujean» gradualmente (suben) hacia la cima o parte superior del array de modo similar a como suben las burbujas en el agua, mientras que los valores mayores se hunden en la parte inferior del array.
  • 4. Método Burbuja Simple ▪ La burbuja mas simple de todas es la que compara todos con todos, generando comparaciones extras, por ejemplo, no tiene sentido que se compare con sigo mismo o que se compare con los valores anteriores a el, ya que supuestamente, ya están ordenados. ▪ Por ejemplo, imaginemos que tenemos los siguientes valores: Lo que haría una burbuja simple, seria comenzar recorriendo los valores de izq. A derecha, comenzando por el 5. Lo compara con el 6, con el 1, con el 0 y con el 3, si es mayor o menor (dependiendo si el orden es ascendiente o descendiente) se intercambian de posición. Luego continua con el siguiente, con el 6, y lo compara con todos los elementos de la lista, esperando ver si se cumple o no la misma condición que con el primer elemento. Así, sucesivamente, hasta el ultimo elemento de la lista. 5 6 1 0 3
  • 5. Estructura En JAVA for (i=0; i<n; i++) { for (j=i+1; j<n; j++) { if(V[i]>V[j]) { aux =V[i]; V[i] =V[j]; V[j] = aux; } } }
  • 6. Ejemplo: 50 20 40 80 30 20 50 40 80 30 20 40 50 80 30 20 40 50 80 30 20 40 50 30 80 ▪ Elementos (A = 50, 20, 40, 80, 30), donde se introduce una variable interruptor para detectar si se ha producido intercambio en la pasada. ▪ Pasada 0 Intercambio 50 y 20 Intercambio 50 y 40 50 y 80 ordenados Intercambio 80 y 30 Elemento mayor es 80 interruptor = TRUE
  • 7. ▪ Pasada 1 20 y 40 ordenados 40 y 50 ordenados Se intercambian 50 y 30 •50 y 80 elementos mayores y ordenados • interruptor = TRUE 20 40 50 30 80 20 40 50 30 80 20 40 50 30 80 20 40 30 50 80
  • 8. 20 40 30 50 80 20 30 40 50 80 20 30 40 50 80 ▪ Pasada 2.- Solo se hacen dos comparaciones. 20 y 40 ordenados Se intercambian 40 y 30 interruptor = TRUE  Pasada 3.- Se hace una única comparación de 20 y 30, y no se produce intercambio: 20 y 30 ordenados Lista ordenada interruptor = FALSE 20 30 40 50 80
  • 9. Método Selección Pasada 0. Seleccionar 21 Intercambiar 21 y A[0] 51 21 39 80 39 ▪ Los métodos de ordenación por selección se basan en dos principios básicos: Seleccionar el elemento más pequeño (o más grande) del arreglo. Colocarlo en la posición más baja (o más alta) del arreglo. A diferencia del método de la burbuja, en este método el elemento más pequeño (o más grande) es el que se coloca en la posición final que le corresponde. ▪ Consideremos un array A con 5 valores enteros 51, 21, 39, 80, 36: A[0] A[1] A[2] A[3] A[4] Pasada 0 21 51 39 80 36 Pasada 1 Pasada 1. Seleccionar 36 Intercambiar 36 y A[1]
  • 10. 21 36 39 80 Pasada 2 Pasada 2. Seleccionar 39 Intercambiar 39 y A[2] 21 36 80 51 Pasada 3 Pasada 3. Seleccionar 51 Intercambiar 51 y A[3] 21 36 39 51 80 Lista ordenada
  • 11. Estructura en JAVA ▪ for (i=0; i<n; i++) { imin=i; for (j=i+1; j<n; j++) { if(V[j]<V[imin]) imin=j; } aux =V[i]; V[i] =V[imin]; V[imin] = aux; }
  • 12. Método Inserción ▪ El método de ordenación por inserción es similar al proceso típico de ordenar tarjetas de nombres (cartas de una baraja) por orden alfabético, que consiste en insertar un nombre en su posición correcta dentro de una lista o archivo que ya está ordenado. ▪ Así el proceso en el caso de la lista de enteros A = 50, 20, 40, 80, 30. 50 Se comienza por el 50 Procesar 20 50 20 Se inserta 20 en la posición 0 50 se mueve a posición 1 Procesar 40 Procesar 80 Procesar 30 50 20 40 Se inserta 40 en la posición 1 Se mueve 50 a posición 2 50 20 40 80 El elemento 80 está bien ordenado 50 20 40 80 30 Se inserta 30 en posición 1 Se desplaza a la derecha la sublista derecha
  • 13. Estructura en JAVA for(i=1; i<n; i++) { temp =V[i]; Izq = 0; Der = i-1; while(Izq <= Der){ Medio = (Izq+Der)/2; if (temp <V[Medio]) Der = Medio - 1; else Izq = Medio + 1; } for (j=i-1; j>=Izq; j--){ V[j+1]=V[j]; } V[Izq] = temp; }
  • 14. Método Shell ▪ El nombre se debe a su inventor, D. L. Shell. 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. ▪ 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.
  • 15. 74, 14, 21, 44, 38, 97, 11, 78, 65, 88, 30 Se debe empezar con k=n/2 , siendo n el número de elementos de arreglo, y utilizando siempre la división entera.... después iremos variando k haciéndolo más pequeño mediante sucesivas divisiones por 2, hasta llegar a k=1. Pero vamos a ello... En nuestro ejemplo, n=11 (porque hay 11 elementos). Así que k=n/2=11/2=5 Empezamos con k=5. Así pues, vamos a dividir nuestro arreglo original en 5 sub-arreglo, en los cuales, sus elementos estarán separados por 5 lugares del arreglo original (el salto o gap es 5). 1.- Tomamos el primer elemento (el 74) contamos 5 lugares y tomamos también otro elemento (el 97) volvemos a contar 5 y tomamos otro (el 30) y acabamos porque se nos acaba el arreglo. El primer sub-arreglo con k=5 es el formado por 74, 97 y 30. 74 , 14, 21, 44, 38, 97 , 11, 78, 65, 88, 30 Ejemplo
  • 16. Ahora, ordenaremos los elementos del sub-arreglo (rojo) pero sólo entre ellos, utilizando el algoritmo de Inserción directa. 74, 97, 30 30 , 14, 21, 44, 38, 74 , 11, 78, 65, 88, 97 El 30, un elemento relativamente pequeño se ha ido hacia el principio y el 97 hacia el final. Formemos ahora otro sub-arreglo con salto k=5... partiendo del segundo elemento (el 14) y contando 5 (tomamos también el 11) y hasta ahí, porque se acaba el arreglo. 30 , 14 , 21, 44, 38, 74 , 11 , 78, 65, 88, 97 Vamos a ordenarlos el 11 primero y el 14 después. 30 , 11 , 21, 44, 38, 74 , 14 , 78, 65, 88, 97
  • 17. 30 , 11 , 21, 44, 38, 74 , 14 , 78, 65, 88, 97 Ahora a por otro el 21 y el 78 30 , 11 , 21, 44, 38, 74 , 14 , 78, 65, 88, 97 Están en orden entre ellos, así que se quedan como están. Ahora le toca al sub-arreglo formado por el 44 y el 65 30 , 11 , 21, 44, 38, 74 , 14 , 78, 65, 88, 97 Que también están en orden entre ellos. y finalmente el 38 y el 88, que también están en orden. 30 , 11 , 21, 44, 38, 74 , 14 , 78, 65, 88, 97
  • 18. Aún no hemos terminado de ordenarlos. Nuestra k valía 5, así que ahora k←k/2=5/2=2, nuestra nueva k vale 2. Repetimos todo el desarrollo anterior, pero ahora nos saldrán 2 sub- arreglo cuyos elementos están separados por 2 lugares. Tomamos el primer elemento (el 30) contamos 2 lugares y tomamos también otro elemento (el 21) volvemos a contar 2 y tomamos otro (el 38), volvemos a contar y ahora tomamos (el 14), seguimos contado y tomamos (el 65), seguimos contando y tomamos (el 97) y acabamos porque se nos acaba el arreglo. Y posteriormente se forma el según sub-arreglo que empieza con el 11. 30 , 11 , 21, 44, 38, 74 , 14 , 78, 65, 88, 97 Se ordena (primero los rojos), con el método de inserción: 14 , 11 , 21, 44, 30, 74 , 38 , 78, 65, 88, 97 Finalmente ordenamos los negros, pero estos ya están ordenados: 14 , 11 , 21, 44, 30, 74 , 38 , 78, 65, 88, 97
  • 19. ▪ Finalmente, calculamos un nuevo k dividiendo el que tenemos entre 2. k←k/2=2/2=1 Hemos llegado a k=1. Cuando k es 1 sólo podemos obtener 1 sub-arreglo cuyos elementos están separados 1 posición: el propio arreglo original. Dicho de otra manera... cuando k es 1, el algoritmo de Shell se comporta exactamente igual que el de inserción directa sobre todo el arreglo. 14 , 11 , 21, 44, 30, 74 , 38 , 78, 65, 88, 97 ▪ El método de inserción directa se comporta tanto mejor cuanto más cerca está cada elemento de su sitio definitivo. Finalmente, el arreglo queda de ésta manera: 11, 14, 21, 30, 38, 44, 65, 74, 78, 88, 97 ▪ Cada elemento descolocado ha tenido que moverse pocos lugares. Muchos de ellos ni siquiera se han movido.
  • 20. Estructura en JAVA void shellSort(int a[], int h) { int i; while (h > 0) { for (i = h-1; i<n; i++) { int B = a[i]; int j = i; for (j = i; (j >= h) && (a[j - h] > B); j -=h) { a[j] = a[j -h];} a[j] = B; } h = h / 2; } }