Boa tarde galera!
Pessoal estou desenvolvendo um "sisteminha", no qual eu tenho dois métodos de busca, (binário e linear).
Só que está ocorrendo um problema no método de busca linear, que não consigo resolver nem fu*$#!
Segue abaixo a classe de busca binaria:
public class BuscaBinaria {
public static boolean Binaria(int x, int dados[]){
int n = dados.length;
int aux = 0;
for(int i = 0; i < n; i++){// Ordena o vetor em forma crescente
for(int j = 0; i < n; j++){
if(dados[i] <= dados[j]){//Problema aqui!!!
aux = dados[j];
dados[j] = dados[i];
dados[i] = aux;
}
}
}
int meio;
int inicio = 0;
int fim = dados.length-1;
while (inicio <= fim) {
meio = (inicio + fim)/2;
if (x == dados[meio])
return true;
if (x < dados[meio])
fim = meio - 1;
else
inicio = meio + 1;
}
return false;
}
}
Classe executável:
import java.util.*;
public class Ex1Binario {
public static void main(String[] args) {
int vet[];
vet = new int[9];
int elemento;
Scanner input = new Scanner(System.in);
for ( int i = 0; i< vet.length; i++){
System.out.println(" Informe o elemento " + (i+1) + " para o array: ");
vet[i] = input.nextInt();
}
System.out.println(" Informe um elemento para busca: ");
elemento = input.nextInt();
BuscaLinear.Linear(elemento, vet);
BuscaBinaria.Binaria(elemento, vet);
if(BuscaLinear.Linear(elemento, vet) == true)
System.out.println(" *** O numero foi achado no metodo linear *** ");
else
System.out.println(" *** O numero nao foi achado no metodo linear *** ");
if(BuscaBinaria.Binaria(elemento, vet) == true)
System.out.println(" *** O numero foi achado no metodo binario *** ");
else
System.out.println(" *** O numero nao foi achado no metodo binario *** ");
}
}
O erro que esta ta dando e esse:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
at BuscaBinaria.Binaria(BuscaBinaria.java:11)
at Ex1Binario.main(Ex1Binario.java:24)
O que pode ser galera? Sera que meu método de ordenação esta errado?
Obrigado.. :D
