Metodos de Ordenamiento

7
2015-I MATERIA ESTRUCTURA DE DATOS TEMA METODOS DE ORDENAMIENTO PROFESOR Ing. MIGUEL ANGEL SÁNCHEZ HERNÁNDEZ

description

metodos de ordenamiento

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