Metodo de busqueda
Estoy realizando una búsqueda a través del método binario ya hice uno con una bandera y me anda perfecto pero quisiera saber si alguien puede compilar mi método y ver donde esta el error junto conmigo ya que en ocasiones me sale un error de fuera de indice.
public class Busqueda_Binaria {
int vector[];
int n;
public void principal()
{
Scanner f = new Scanner(System.in);
llenarMatriz();
ordenacionBurbujaIntercambio();
System.out.println("\nMatriz ordenada");
imprimirMatriz();
System.out.println("\nQue elemento está buscando: ");
int s = f.nextInt();
Busqueda_Binaria(s);
}
private void llenarMatriz()
{
Scanner entrada = new Scanner(System.in);
System.out.print("Cuantos elemento va a introducir: ");
n = entrada.nextInt();
vector = new int[n];
for(int i = 0; i < vector.length; i = i + 1)
{
System.out.println("Intoduzca valor " + i + ": ");
int p = entrada.nextInt();
vector = p;
}
}
private void ordenacionBurbujaIntercambio()
{
int aux = 0;
for(int i = 0; i < vector.length - 1; i = i + 1)
for(int j = 0; j < vector.length - 1; j = j + 1)
{
if (vector[j] > vector[j + 1])
{
// intercambiar
aux = vector[j];
vector[j] = vector[j + 1];
vector[j + 1] = aux;
}
}
}
private void imprimirMatriz()
{
for(int i = 0; i < vector.length; i = i + 1)
System.out.println(vector);
}
Este es el método, en negrita es donde me sale algunas veces la línea de error.
private void Busqueda_Binaria(int x)
{
System.out.println("\nElemento buscado por Búsqueda Binaria");
int bajo = 0;
int alto = vector.length;
int central = (int) ((bajo + alto) / 2);
while((bajo < alto) && (vector[central] != x))
{
if (x < vector[central])
alto = central - 1;
else
bajo = central + 1;
central = (int) ((bajo + alto ) / 2);
}
if(x == vector[central])
System.out.println("Valor encontrado en " + central);
else
System.out.println("Valor no encontrado");
}
Aclaro que desde el main llamo con la referencia al método principal,
public class Busqueda_Binaria {
int vector[];
int n;
public void principal()
{
Scanner f = new Scanner(System.in);
llenarMatriz();
ordenacionBurbujaIntercambio();
System.out.println("\nMatriz ordenada");
imprimirMatriz();
System.out.println("\nQue elemento está buscando: ");
int s = f.nextInt();
Busqueda_Binaria(s);
}
private void llenarMatriz()
{
Scanner entrada = new Scanner(System.in);
System.out.print("Cuantos elemento va a introducir: ");
n = entrada.nextInt();
vector = new int[n];
for(int i = 0; i < vector.length; i = i + 1)
{
System.out.println("Intoduzca valor " + i + ": ");
int p = entrada.nextInt();
vector = p;
}
}
private void ordenacionBurbujaIntercambio()
{
int aux = 0;
for(int i = 0; i < vector.length - 1; i = i + 1)
for(int j = 0; j < vector.length - 1; j = j + 1)
{
if (vector[j] > vector[j + 1])
{
// intercambiar
aux = vector[j];
vector[j] = vector[j + 1];
vector[j + 1] = aux;
}
}
}
private void imprimirMatriz()
{
for(int i = 0; i < vector.length; i = i + 1)
System.out.println(vector);
}
Este es el método, en negrita es donde me sale algunas veces la línea de error.
private void Busqueda_Binaria(int x)
{
System.out.println("\nElemento buscado por Búsqueda Binaria");
int bajo = 0;
int alto = vector.length;
int central = (int) ((bajo + alto) / 2);
while((bajo < alto) && (vector[central] != x))
{
if (x < vector[central])
alto = central - 1;
else
bajo = central + 1;
central = (int) ((bajo + alto ) / 2);
}
if(x == vector[central])
System.out.println("Valor encontrado en " + central);
else
System.out.println("Valor no encontrado");
}
Aclaro que desde el main llamo con la referencia al método principal,
Respuesta de dimondi21
1