Como fazer uma pesquisa sequencial, binária e com sentinela no Java e marcar o tempo de execução de cada pesquisa?

24/03/2016

1

Comecei a desenvolver esse programa, mas, ele não está imprimindo o tempo das pesquisas:


package pesquisarandom;
import java.io.IOException;
public class SequencialBinaria{
public static void main(String[] args) throws IOException{

int n = 100, x = 0;
int original[] = new int[n];
int a[]= new int[n];
long ti = System.currentTimeMillis();
for(int i=0; i < n; i++){
x = (int) (Math.random()*100);
original[i]=x;
a[i]=x;
}
int i, j, menor, aux;
for(i=0; i<(n-1);i++){
menor = i;
for(j=(i+1);j<n;j++)
if(a[j]<a[menor])
menor=j;

aux=a[i];
a[i]=a[menor];
a[menor]=aux;
}

long tf = System.currentTimeMillis();
System.out.println("Executado em = " + (tf - ti) + " ms");
System.out.println("---------------------------");
System.out.println("v[i] = Original Ordenado");
System.out.println("---------------------------");
// int i;
for(i=0; i<n; i++){
System.out.printf("v[%d] = %8d, %8d\n", i, original[i], a[i]);
}
}

}

class pesquisasequencial{

int pesquisaSequencial(int vetor[],int tam, int dado){
int i = 0;
long ti = System.currentTimeMillis();
while(i < tam && dado != vetor[i]){
i++;
} if(i < tam){
return i;

} else{
return -1;
}

long tf = System.currentTimeMillis();
System.out.println("Executado em = " + (tf - ti) + " ms");
}
}

class pesquisaseqSentinela{
int pesquisa(int vetor1[], int tam, int dado1){
int i = 0;
long ti = System.currentTimeMillis();
vetor1[tam] = dado1;
while(dado1 != vetor1[i]){
i++;
}if(i < tam){
return i;
}else{
return -1;
}
long tf = System.currentTimeMillis();
System.out.println("Executado em = " + (tf - ti) + " ms");
System.out.println("---------------------------");
}
}

class pesquisaBinaria{
int pesquisaBin(int vetor2[], int tam, int dado2){
int i, esq=0, dir=tam-1;
long ti = System.currentTimeMillis();
if(tam == 0){
}
return -1;
do{
i = (esq + dir)/2;
if(vetor2[i] < dado2){
esq = i + 1;

}else{
dir = i - 1;
}
while((vetor2[i] != dado2)&&(esq <= dir)){
if(vetor2[i] == dado2){
return i;

}else{
return - 1;
}

long tf = System.currentTimeMillis();
System.out.println("Executado em = " + (tf - ti) + " ms");
System.out.println("---------------------------");

}
}
}
}


Espero que me ajudem.

Abraço,
Flávia Mota
Responder