Metodos de Ordenamiento
-
Upload
izak-thesiger -
Category
Documents
-
view
3 -
download
0
description
Transcript of Metodos de Ordenamiento
-
2015-I
MATERIA
ESTRUCTURA DE DATOS
TEMA
METODOS DE ORDENAMIENTO
PROFESOR
Ing. MIGUEL ANGEL SNCHEZ HERNNDEZ
-
Ing. Miguel Angel Snchez Hernndez
Ordenacin por Seleccin
Este es uno de los mtodos ms sencillos ya que su funcin es seleccionar
elemento ms pequeo de los que quedan por ordenar
buscamos el ms pequeo de todo arreglo, y se coloca en su posicin correspondiente
(arreglo[0]), despus tenemos que volver a buscar entre arreg
en su posicin final (arreglo[2]), este proceso se repite hasta que todos los elementos estn en su
posicin original. El siguiente seudocdigo
Seleccin(arreglo[]){
For i=0 hasta arreglo.longitud
Seleciona el elemento menor entre arreglo[i] . . . arreglo[arreglo.longitud];
Intercambiar con arreglo[i].
}
public void seleccion(int[] arreglo) {
int min = 0;
for (int i = 0; i < arreglo.length; i++) {
min = i;
for (int j = i + 1; j < arreglo.length; j++) {
if (arreglo[j] < arreglo[min]) {
min = j;
}
}
if (i != min) {
int temp = arreglo[i];
arreglo[i] = arreglo[min];
arreglo[min] = temp;
}
}
}
Prueba de escritorio
Ing. Miguel Angel Snchez Hernndez
Este es uno de los mtodos ms sencillos ya que su funcin es seleccionar repetidamente el
elemento ms pequeo de los que quedan por ordenar y colocarlo en su posicin final
buscamos el ms pequeo de todo arreglo, y se coloca en su posicin correspondiente
(arreglo[0]), despus tenemos que volver a buscar entre arreglo[1].arreglo[n
en su posicin final (arreglo[2]), este proceso se repite hasta que todos los elementos estn en su
posicin original. El siguiente seudocdigo y cdigo explica el algoritmo.
ongitud -2
Seleciona el elemento menor entre arreglo[i] . . . arreglo[arreglo.longitud];
Intercambiar con arreglo[i].
public void seleccion(int[] arreglo) {
for (int i = 0; i < arreglo.length; i++) {
for (int j = i + 1; j < arreglo.length; j++) {
if (arreglo[j] < arreglo[min]) {
int temp = arreglo[i];
arreglo[i] = arreglo[min];
arreglo[min] = temp;
repetidamente el
y colocarlo en su posicin final. Primero
buscamos el ms pequeo de todo arreglo, y se coloca en su posicin correspondiente
lo[1].arreglo[n-1] y se pone igual
en su posicin final (arreglo[2]), este proceso se repite hasta que todos los elementos estn en su
-
Ing. Miguel Angel Snchez Hernndez
Ejercicio 1 : Implementa el mtodo, y prubalo con un arreglo de tipo entero, en donde tienes
que llenar el arreglo con nmeros aleatorios comprendidos entre 0 y 100, el tamao del arreglo
que sea de 100 elementos .Los resultados representarlos en consola.
Ejercicio 2 : Crea una clase que se llame Datos, la cual debe tener dos campos, el primero es de
tipo int, el segundo de tipo String. Debes de tener un constructor que reciba un entero y un
String para cambiar los campos de la clase, una vez realizado esto tienes que crear un arreglo de
tipo Dato de 100 elementos, el cual tienes que inicializar cada objeto del arreglo con un nmero
aleatorio entre 0 y 100, que ser para el campo int, y el campo de tipo String le corresponde el
ndice del arreglo se requiere 100 elementos del arreglo. Aplica el algoritmo de seleccin para
ordenarlo, puedes tomar en cuenta el mtodo equals, que heredas de Object para hacer las
comparaciones. Los resultados representarlos en consola.
Ejercicio 3: Mostrar el nmero de comparaciones e intercambios que realiza el ejercicio anterior.
Ejercicio 4: Bajar el archivo de Correos de Mxico, en donde debe de tener los cdigos postales,
crear una clase que se tenga referencia de los datos que vienen en el archivo, tienes que tener
una arreglo del tipo de la clase que diseaste y llenarla con los datos del archivo. Aplica el
algoritmo de seleccin para ordenarlo de acuerdo al cdigo postal, una vez ordenado crea un
archivo alterno donde muestras los elementos ordenados del arreglo.
Ejercicio 5: Hay que representar grficamente el comportamiento del algoritmo de seleccin
tomando el cuanta las coordenadas (i,j), en donde j=arreglo[i] y i es el ndice del arreglo, en cada
interaccin se tiene que refrescar las coordenadas.
Ordenacin por Insercin
Este algoritmo es ms flexible que el de seleccin, este comienza al considerar los dos primeros
elementos del arreglo arg, los cuales son arg[0] y arg[1]. Si no estn ordenados, ocurre un
intercambio. Entonces, se considera el tercer elemento arg[2] que se insertara en su lugar
adecuado. Si arg[2] es menor que arg[0] y arg[1], estos dos elementos se recorren una posicin;
arg[0] se coloca en la posicin 1, arg[1] en la posicin 2, y arg[2] en la posicin 0. Si arg[2] es
menor que arg[1] y no es menor que arg[0], entonces solo arg[1] se mueve a la posicin 2 y su
lugar s ocupado por arg[2]. Si por ultimo arg[2] no es menor que sus dos predecesores, permanece
en su posicin actual. Cada elemento arg[i] se inserta en su localidad apropiada j de modo que
0ji, y todos los elementos mayores que arg[i] se mueven una posicin. El siguiente seudocdigo
y cdigo muestra como se puede ocupar.
Insercion(arreglo[]){
For i=1 hasta arreglo.longitud -1
tmp=arreglo[i]
mueve los elementos del arreglo{j] mayores que tmp una posicin;
coloca tmp en su posicin adecuada
}
-
Ing. Miguel Angel Snchez Hernndez
public void insercion(int[] arreglo){
for (int i = 1,j; i < arreglo.length; i++) {
int temp=arreglo[i];
for (j = i; j>0 && temp0 && temp
-
Ing. Miguel Angel Snchez Hernndez
Ejercicio 5: Hay que representar grficamente el comportamiento del algoritmo de
tomando el cuanta las coordenadas (i,j), en donde j=arreglo[i] y i es el ndice del
interaccin se tiene que refrescar las coordenadas.
Ordenacin por intercambio directo o burbuja
La idea bsica del ordenamiento burbuja es imaginar que tenemos un arreglo en forma vertical, y
que los elementos del arreglo con claves m
que se recorra el arreglo varias veces de abajo hacia arriba, al hacer esto si tenemos dos
elementos que estn adyacentes que no estn en orden, es decir si el ms ligero esta abajo se
invierten. El seudocdigo y cdigo es el siguiente.
Insercion(arreglo[]){
For i=0 hasta arreglo.longitud
For j=arreglo.longitud hasta i+1 (decrementar)
Intercambiar j y j-1 si no est
}
private void burbuja(int arreglo){
for (int i = 0; i < arreglo.length
for (int j = arreglo.length
if (arreglo[j] i; j--) {
if (arreglo[j]
-
Ing. Miguel Angel Snchez Hernndez
Ejercicio 2 : Crea una clase que se llame Datos, la cual debe tener dos campos, el primero es de
tipo int, el segundo de tipo String. Debes de tener un constructor que reciba un entero y un
String para cambiar los campos de la clase, una vez realizado esto tienes que crear un arreglo de
tipo Dato de 100 elementos, el cual tienes que inicializar cada objeto del arreglo con un nmero
aleatorio entre 0 y 100, que ser para el campo int, y el campo de tipo String le corresponde el
ndice del arreglo se requiere 100 elementos del arreglo. Aplica el algoritmo de burbuja para
ordenarlo, puedes tomar en cuenta el mtodo equals, que heredas de Object para hacer las
comparaciones. Los resultados representarlos en consola.
Ejercicio 3: Mostrar el nmero de comparaciones e intercambios que realiza el ejercicio anterior.
Ejercicio 4: Bajar el archivo de Correos de Mxico, en donde debe de tener los cdigos postales,
crear una clase que se tenga referencia de los datos que vienen en el archivo, tienes que tener
una arreglo del tipo de la clase que diseaste y llenarla con los datos del archivo. Aplica el
algoritmo de burbuja para ordenarlo de acuerdo al cdigo postal, una vez ordenado crea un
archivo alterno donde muestras los elementos ordenados del arreglo.
Ejercicio 5: Hay que representar grficamente el comportamiento del algoritmo de burbuja
tomando el cuanta las coordenadas (i,j), en donde j=arreglo[i] y i es el ndice del arreglo, en cada
interaccin se tiene que refrescar las coordenadas.
Ordenacin por Mezcla
Los algoritmos anteriores tienen un problema, es decir cuando ms grande sea el arreglo, son ms
lentos en ordenar los elementos. Si podemos dividir el arreglo en dos partes; ordenar cada parte
para poder despus unirlos, se aplica el concepto de divide y vencers. La idea general del
algoritmo es la siguiente:
1.- Se divide el arreglo original (n elementos) en n/2.
2.- Ordena la mistad izquierda.
3.- Ordena la mistad derecha.
4.- Mezclar las dos mitades ordenadas en un arreglo ordenado.
Si nosotros analizamos en si el algoritmo no especifica que mtodo ocupar para ordenar las dos
partes, por lo que las posibilidades que tenemos son ocupar los 3 algoritmos anteriores o ocupar
el mismo mtodo de mezcla, es decir hacer una llamada recursiva, hasta que el caso base sea
cuando el arreglo sea igual a 1, por lo que podemos considerar que ya esta ordenado por lo tanto
se retornan todas las llamadas hechas.
Entendamos un poco el proceso de hacer la mezcla; como podemos analizar todo el trabajo se
encuentra en el proceso de unir los subarreglos que se tienen, partamos en que los dos
subarreglos estn ordenados como se muestra a continuacin:
-
Ing. Miguel Angel Snchez Hernndez
Ejercicio 1 : Implementa el mtodo, solo crear sub
Ejercicio 2 : Implementa el mtodo, y
que llenar el arreglo con nmeros aleatorios comprendidos entre 0 y 100, el tamao del arreglo
que sea de 100 elementos .Los resultados representarlos en consola.
Ejercicio 3: Bajar el archivo de Correos de Mxico, en donde debe de tener los cdigos postales,
crear una clase que se tenga referencia de los datos que vienen en el archivo, tienes que tener
una arreglo del tipo de la clase que diseaste y llenarla con los
algoritmo de mezcla para ordenarlo de acuerdo al cdigo postal, una vez ordenado crea un
archivo alterno donde muestras los elementos ordenados del arreglo.
Ing. Miguel Angel Snchez Hernndez
ementa el mtodo, solo crear subarreglos. Y ordnalos ocupando mezcla.
Implementa el mtodo, y prubalo con un arreglo de tipo entero, en donde tienes
que llenar el arreglo con nmeros aleatorios comprendidos entre 0 y 100, el tamao del arreglo
Los resultados representarlos en consola.
: Bajar el archivo de Correos de Mxico, en donde debe de tener los cdigos postales,
crear una clase que se tenga referencia de los datos que vienen en el archivo, tienes que tener
una arreglo del tipo de la clase que diseaste y llenarla con los datos del archivo
para ordenarlo de acuerdo al cdigo postal, una vez ordenado crea un
archivo alterno donde muestras los elementos ordenados del arreglo.
ordnalos ocupando mezcla.
de tipo entero, en donde tienes
que llenar el arreglo con nmeros aleatorios comprendidos entre 0 y 100, el tamao del arreglo
: Bajar el archivo de Correos de Mxico, en donde debe de tener los cdigos postales,
crear una clase que se tenga referencia de los datos que vienen en el archivo, tienes que tener
datos del archivo. Aplica el
para ordenarlo de acuerdo al cdigo postal, una vez ordenado crea un