Ordenação de vetores, como eu insiro um contador de tempo neste trabalho

10 respostas
luisedicarlos

Olá pessoal, esta é a primeira vez que posto aqui no fórum, porem já fiz varias pesquisas aqui que me foram muito uteis, estou fazendo um trabalho na faculdade, ele tá até anexo neste post (não consegui colocar o codigo aqui, e ele é grande tambem), o professor solicitou que fizessemos a ordenação em tres metodos, deveriamos entrar com o tamanho do vetor e escolher o metodo de ordenação e deveriamos mostrar o tempo gasto por cada um, consegui fazer ordenar por dois metodos, bolha e insercao, o metodo quick não consegui, eu usei o netbeans com a parte com a interface gráfica já que estou começando em java.

se puderem me ajudar a fazer a parte da media do tempo eu agradeceria muito, e se puderem me dar umas dicas do código tambem, o trabalho é pra hoje a noite…
usei a parte grafica e uma classe para cada metodo com passagem de parametro, foi o melhor que consegui de ontem pra cá que foi quando me passaram o trabalho.

muito obrigado e bom dia

10 Respostas

xandevieira

Para medir o tempo vc pode fazer assim:

Long inicio = System.currentTimeMillis();
//seu codigo de ordenacao
Long fim = System.currentTimeMillis();

depois subtrai um do outro.
RDSILVA

Fala ai cara,
Seguinte você também pode utilizar o TIMER
coloca no seu código um cara

Timer t = new Timer(1000, action); t.start();
antes de começar a ordenação e um

t.Stop();
no termino e manda exibir em algum lugar…

Abraço

B

Timer serve para agendar a execução de threads, não para contagem de tempo.

luisedicarlos

avsouza:
Para medir o tempo vc pode fazer assim:

Long inicio = System.currentTimeMillis();
//seu codigo de ordenacao
Long fim = System.currentTimeMillis();

depois subtrai um do outro.

Muito obrigado pela ajuda, você chegou a ver meu código? Desulpa a minha ignorancia, é pq sou bem novo em java, mas onde eu colocaria este código, nas classes? se não for pedir muito e se vc puder, vc poderia me dar exemplo usando o meu código, não é fazer pra mim pq preciso aprender, mas só mais uma dica se não for pedir muito

Muito obrigado e até mais…

xandevieira

Não tinha visto seu codigo, mas segue um exemplo no seu codigo.

private void ordenaBolha(int matriz[]) { Long inicio = System.currentTimeMillis(); for (int i = 0; i < matriz.length-1; i++) { for (int j = 0; j < matriz.length-i-1; j++) { if (matriz[j] > matriz[j+1]) { swap(matriz, j, j+1); } } } System.out.println(System.currentTimeMillis() - inicio); ; }

derrepende vc cria um metodo para pegar o tempo e mostrar

luisedicarlos

avsouza:
Não tinha visto seu codigo, mas segue um exemplo no seu codigo.

private void ordenaBolha(int matriz[]) { Long inicio = System.currentTimeMillis(); for (int i = 0; i < matriz.length-1; i++) { for (int j = 0; j < matriz.length-i-1; j++) { if (matriz[j] > matriz[j+1]) { swap(matriz, j, j+1); } } } System.out.println(System.currentTimeMillis() - inicio); ; }

derrepende vc cria um metodo para pegar o tempo e mostrar

Muito obrigado novamente, sei que vou conseguir entregar este trabalho hoje, vou tentar criar um campo na interface que mostre assim que terminar a execução do metodo o tempo que levou para executar, conforme vc mostrou, seram três metodos mostrados a turma e devo mostrar o tempo de cada um.
Se não for pedir muito novamente, tem um metodo que não consegui executar, ele tá dando erro, já tentei de tudo, será se você tambem poderia me ajudar, é o metodo quicksort (classe RAPIDA do projeto).

Novamente muito obrigado e bom dia.

xandevieira

poste o erro q ocorre

B

Se o System.currentTimeMillis() não for o suficiente, use o System.nanoTime(), ele é mais preciso (mede em nanosegundos).

xandevieira

uma coisa que reparei no seu codigo, o metodo abaixo chama o metodo particao, so que não existe um metodo particao q receba somente aum array de int, somente este

private int particao(Object[] array, int begin, int end, Comparator cmp) {
}


public int [] Rapida (int matrizRapida[]){
    this.matriz = matrizRapida;
    particao(matrizRapida);
    return this.matriz;
}
luisedicarlos

avsouza:
Não tinha visto seu codigo, mas segue um exemplo no seu codigo.

private void ordenaBolha(int matriz[]) { Long inicio = System.currentTimeMillis(); for (int i = 0; i < matriz.length-1; i++) { for (int j = 0; j < matriz.length-i-1; j++) { if (matriz[j] > matriz[j+1]) { swap(matriz, j, j+1); } } } System.out.println(System.currentTimeMillis() - inicio); ; }

derrepende vc cria um metodo para pegar o tempo e mostrar

Estou usando e netbeans, tentei colocar o tempo em um campo de texto na classe FuncionandoView, porem não consegui, você pode me ajudar? preciso que o tempo que for gasto na classe bolha ser colocado depois de executado na classe FuncionandoView, para ser exibido o tempo que foi gasto, não pelo console mas sim pela interface, tipo um campo de texto receber este valor, igual o campo lista esta recebendo o vetor ordenado.

Desde já agradeço a ajuda…

Criado 3 de dezembro de 2008
Ultima resposta 3 de dez. de 2008
Respostas 10
Participantes 4