sábado, 11 de junio de 2011

Programación Java. Problema 01: Ordenar datos / números.

 En el caso que tuviéramos un arreglo de números, y los quisiéramos ordenar, ya sea para obtener el numero mayor, el menor, el dato que se repite más veces, etc. Tendríamos que re ordenar el arreglo, acomodando los números ya sea del menor al mayor, o del mayor al menor.

Para esto existen diversos métodos. Como el método de la burbuja (bubble sort), shaker sort, quick sort, etc.

Durante los temas que iré poniendo, estaré obviando mucho lo que es la explicación, y solo daré un enunciado del problema y en algunas ocasiones el código del problema resuelto, aunque existen diversas formas de resolver algunos problemas, y cada código seria distinto.

Problema.
Dado un numero entero N, crear un arreglo de N elementos. Llenar el arreglo con numeros generados aleatoriamente del 1 al 20, o ingresarlos manualmente. Imprimir el arreglo generado, ordenar los números del menor al mayor e imprimirlos.

Solución:
Intentar resolverlo en base a su lógica, intenten no buscar ningún método de ordenamiento en Internet (en caso de no conocerlos).

Solución propuesta 1
//Despues de tener un arreglo con numeros enteros.
for(i=0; i < arreglo.length; i++ ) {
   for(j=1;jarreglo[j]){
          aux = arreglo[i]; //Guardamos en una variable aux, el valor actual de arreglo[i]
          arreglo[i]=arreglo[j]; //Sobreescribimos arreglo[i]
          arreglo[j]=aux;  //Sobreescribimos arreglo[j]
      }//Fin del IF
   } //Fin del for anidado
}//Fin del primer for
//Fin del programa

Solución propuesta 2:
//Despues de tener un arreglo llamado "values" con numeros enteros.
do {
    boolean swapped = false;
    for(var i = 0; i < values.length; i++) {
      if (values[i] > values[i+1]) {
        int temp = values[i];
        values[i] = values[i+1];
        values[i+1] = temp;
        swapped = true;
      }
    }
  }
  while(swapped == true)


Básicamente se cambian de lugar los 2 números que se comparan, en caso que uno sea mayor al otro.

En la siguiente pagina pueden encontrar una animación donde se explica un poco mejor el funcionamiento de esta solución propuesta, conocida como el método de la burbuja.
http://algorithms.openmymind.net/sort/bubblesort

También les dejo un video del "Baile del Bubble Sort"
http://www.youtube.com/watch?v=lyZQPjUT5B4

Fuente: http://algorithms.openmymind.net/sort/bubblesort