domingo, 9 de diciembre de 2012

LLENAR VECTOR CON 500 NUMEROS AL AZAR CON RANGO DEL 1 AL 100, USANDO EL METODO DE BURBUJA Y UN CRONOMETRO PARA MEDIR EL TIEMPO DE ORDENAMIENTO

En este ejemplo se usa el metodo de ordenamiento de burbuja para ordenar el vector

import java.util.Random;
import java.util.GregorianCalendar;
import java.util.Calendar;
public class Tarea {

   public static void main (String[] args) {
                int i, vec[]=new int[500];
                System.out.println(" 500 NUMEROS AL AZAR CON RANGO DEL 1 AL 100");
                 for(i=0;i<vec.length;i++) {
           vec[i]=(int) (Math.random()*100+ 1);
        }

        for(i=0;i<vec.length;i++) {
           if (i+1!=vec.length)
             System.out.print(vec[i]+", ");
           else
             System.out.println(vec[i]+".");
        }
                System.out.println(BurbujaMejorada(vec));
}

     public static String BurbujaMejorada (int[] vec){
        String mensaje = "";
        Calendar calendario = new GregorianCalendar();
        int temp = 0, cont =0;
        //aca comenzamos a comparar y ordenar cada espacio del vector
        for(int i=1; i<vec.length;i++){
            for(int j=0; j<vec.length-1; j++){
                if(vec[j] > vec[j+1]){
                    temp = vec[j];
                    vec[j] = vec[j+1];
                    vec[j+1] = temp;
                }
            }
        }

        //comenzamos a concatenar los elementos ordenados en esta cadena
        mensaje = "el arreglo ordenado es:\n";
        do {

            mensaje+= "{" + vec[cont] + "}\n";
            cont++;
      
  }while(cont< vec.length);
        Calendar calendario2 = new GregorianCalendar();
                               long diff = calendario2.getTimeInMillis() - calendario.getTimeInMillis();
                               Calendar diferencia = new GregorianCalendar();
                               diferencia.setTimeInMillis(diff);
                               System.out.println("\n\nTiempo de ejecución: " + diferencia.get(Calendar.MINUTE) + "min. " + diferencia.get(Calendar.SECOND) + "seg. " + diferencia.get(Calendar.MILLISECOND) + "milliseg.");
        //regresamos el mensaje con todos los elementos ordenados
        return mensaje;
    }
}



EJEMPLO DE CORRIDA DEL PROGRAMA


--------------------Configuration: <Default>--------------------
 500 NUMEROS AL AZAR CON RANGO DEL 1 AL 100
91, 89, 95, 79, 36, 4, 75, 73, 92, 93, 35, 95, 82, 67, 1, 88, 33 1, 71, 65, 82, 53, 70, 52, 87, 1, 54, 86, 93, 79, 55, 27, 94, 18, 65, 33, 75, 36, 13, 61, 8, 37, 51, 14, 54, 32, 77, 89, 70, 14.
Tiempo de ejecución: 0min. 2seg. 10milliseg.
el arreglo ordenado es:
{1}{1}{1}{4}{8}{13}{14}{14}{18}{27.......ETC.
Process completed. 

DESCARGAR ARCHIVO ABAJO:

No hay comentarios:

Publicar un comentario