Java – Arreglos – Ordenamiento de valores (int) – Algoritmo de Selección

Arreglo sin orden:
7
0
9
8
1
4
6
2
3

Orden ascendente:
0
1
2
3
4
5
6
7
8
9

Orden descendente:
9
8
7
6
5
4
3
2
1
0

/**
 * ArrayDemo.java
 * 
 * Ejemplo que muestra como ordenar un arreglo de números enteros en forma
 * ascendente y descendente usando el algoritmo de Selección.
 */

/**
 *
 * @author Dark[byte]
 */
class ArrayDemo {

    //un arreglo de 10 números enteros desordenados
    private static int numeros[] = { 7, 0, 9, 8, 1, 4, 6, 2, 3, 5 };

    /**
     * Punto de entrada del programa.
     * 
     * @param args argumentos de la línea de comandos.
     */
    public static void main(String[] args) {
        //imprimimos por pantalla el arreglo de números enteros
        System.out.println("Arreglo sin orden:");
        for (int num : numeros) {
            System.out.println(num);
        }

        System.out.println();

        //ordenamos en forma ascendente el arreglo de números enteros y lo imprimimos por pantalla
        System.out.println("Orden ascendente:");
        ordSelAsc(numeros);
        for (int num : numeros) {
            System.out.println(num);
        }

        System.out.println();

        //ordenamos en forma descendente el arreglo de números enteros y lo imprimimos por pantalla
        System.out.println("Orden descendente:");
        ordSelDesc(numeros);
        for (int num : numeros) {
            System.out.println(num);
        }
    }

    /**
     * Este método ordena en forma ascendente el arreglo pasado como argumento usando el
     * algoritmo de selección.
     * 
     * @param arreglo el arreglo que sera ordenado.
     */
    static void ordSelAsc(int[] arreglo) {
        //iteramos sobre los elementos del arreglo
        for (int i = 0 ; i < arreglo.length - 1 ; i++) {
            int min = i;

            //buscamos el menor número
            for (int j = i + 1 ; j < arreglo.length ; j++) {
                if (arreglo[j] < arreglo[min]) {
                    min = j;    //encontramos el menor número
                }
            }

            if (i != min) {
                //permutamos los valores
                int aux = arreglo[i];
                arreglo[i] = arreglo[min];
                arreglo[min] = aux;
            }
        }
    }

    /**
     * Este método ordena en forma descendente el arreglo pasado como argumento usando el
     * algoritmo de selección.
     * 
     * @param arreglo el arreglo que sera ordenado.
     */
    static void ordSelDesc(int[] arreglo) {
        //iteramos sobre los elementos del arreglo
        for (int i = 0 ; i < arreglo.length - 1 ; i++) {
            int max = i;

            //buscamos el mayor número
            for (int j = i + 1 ; j < arreglo.length ; j++) {
                if (arreglo[j] > arreglo[max]) {
                    max = j;    //encontramos el mayor número
                }
            }

            if (i != max) {
                //permutamos los valores
                int aux = arreglo[i];
                arreglo[i] = arreglo[max];
                arreglo[max] = aux;
            }
        }
    }
}

, , , , , , , ,

  1. Deja un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: