Calcular o tempo que o metodo levou

Gostaria de saber como faço para mostrar para o usúario o TEMPO que o metodo bubbleset levou para ordenar os numeros,no código abaixo o currintTime não funciona,sempre mostra 0.

public static Scanner ler;
public static void main(String[] args) {
// TODO Auto-generated method stub
ler = new Scanner(System.in);
int v;

        System.out.println("Digite o números de casas no vetor que deseja?");
        v = ler.nextInt();

        int vetor[] = new int[v];

        for (int i = 0; i < vetor.length; i++) {
            System.out.print("Digite o " + (i + 1) + "º valor");
            vetor[i] = ler.nextInt();
        }
        
        bubblesort(vetor);

        
    }

    public static void bubblesort(int vet[]){
        int tam = vet.length;

        int i, j, aux;
        long tinicial = System.currentTimeMillis();            
            for(i = 0; i < (tam - 1); i++){

                for(j = 1; j < tam; j++){

                    if(vet[j] < vet[j - 1]){

                        aux = vet[j];

                        vet[j] = vet[j - 1];

                        vet[j - 1] = aux;
                }

            }

        }
            long tfinal = System.currentTimeMillis();
            System.out.println("Tempo = " + (tfinal - tinicial));
            
            for(i = 0; i < vet.length; i++){
                System.out.print(vet[i]);
            }
    }


}

Não será uma execução muito rápida? Usa System.nanoTime() para teres o tempo em nano segundos.

1 curtida

Usei o nanotime,porém gostaria de saber quantos segundos,caso tenha sido menos de 1 segundo,ai mostra 0.12 segundos,tipo assim…

Divide por 1000000.0 (Tens de colocar .0 se não o resultado vai ser sempre 0)

1 curtida

Scanner ler = new Scanner(System.in);
int v;

    System.out.println("Digite o números de casas no vetor que deseja?");
    v = ler.nextInt();

    int vetor[] = new int[v];

    for (int i = 0; i < vetor.length; i++) {
        System.out.print("Digite o " + (i + 1) + "º valor = ");
        vetor[i] = ler.nextInt();
    }
    
    bubblesort(vetor);

    
}

public static void bubblesort(int vet[]){
    int tam = vet.length;

    int i, j, aux;
    long tinicial =System.nanoTime();  //System.currentTimeMillis();            
        for(i = 0; i < (tam - 1); i++){

            for(j = 1; j < tam; j++){

                if(vet[j] < vet[j - 1]){

                    aux = vet[j];

                    vet[j] = vet[j - 1];

                    vet[j - 1] = aux;
            }

        }

    }
        long tfinal = System.currentTimeMillis();
        System.out.println("Tempo = " + (tinicial-tfinal)/1000.0+" segundos\n");
         //no código anterior tfinal-tinicial o resultado era sempre negativo
         // bastou apenas inverter as duas variaveis (tinicial-tfinal) desse jeito
         // e fazer a conversão para segundos
         
        
        for(i = 0; i < vet.length; i++){
            System.out.print(vet[i]);
        }
1 curtida

1 curtida

Olá,

Você mede o tempo de execução do método bubblesort dentro do método main:
long tinicial = System.nanoTime();
bubblesort(vetor);
long tfinal = System.nanoTime();
System.out.println((tfinal-tinicial) + " nanosegundos");

Simples assim. Tem que melhorar sua lógica.

1 curtida

Sou estudante ainda,minha lógica é fraquísima e infelizmente não tralbaho na area e comecei a programar a uns 7 meses.

É normal isso?