Consulta sobre búsqueda en array
Hola dimondi como estas espero que muy bien, disculpa mi nuevo atrevimiento pero quisiera saber si cuando tengas un tiempo puedes ver mi clase. Resulta que he realizado un método con búsqueda binaria y hay algunos valores que no me los encuentra y otros si. Adjunto mi clase y lo que me sale en pantalla para explicarme mejor, espero que cuando tengas tiempo le eches una vista:
package javaapplication179;
import java.util.*;
public class Binaria {
int vector[] = new int [10];
int vectorBis[] = new int [11] ;
Random aleatorio = new Random();
Scanner entrada = new Scanner(System.in);
public void llenarArray()
{
int nro;
for(int i = 0 ; i < vector.length ; i = i + 1)
{
nro = 0 + aleatorio.nextInt(50); //establece rango de nros aleatorios
vector = nro; //se almacenan los nros aleatorios el vector
}
}
public void imprimirVector()
{
System.out.println();
for(int i = 0; i < vector.length; i = i + 1)
System.out.println(vector); //se imprimen los elementos del vector
}
public void ordenarVector()
{
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;
}
}
imprimirVector();
System.out.println();
}
public void dato()
{
System.out.println();
System.out.println("1. Busqueda");
System.out.println("2. Salir");
System.out.println("Opción elegida: ");
int r = entrada.nextInt();
while(r == 1)
{
System.out.println("Elemento buscado: ");
int d = entrada.nextInt();
busquedaBinaria(d);
System.out.println("1. Busqueda");
System.out.println("2. Salir");
System.out.println("Opción elegida: ");
r = entrada.nextInt();
}
}
public void busquedaBinaria(int x)
{
int bajo = 0;
int alto = vector.length;
int central = (int) ((bajo + alto) / 2);
boolean no_se_encontro = false;
while ((bajo < alto) && (vector[central] != x))
{
if (x < vector[central])
alto = central - 1;
else
bajo = central + 1;
central = (int) ((bajo + alto) / 2);
if (central ==alto)
{
no_se_encontro = true;
break;
}
}
if (no_se_encontro == true)
System.out.println("Valor no encontrado");
else
System.out.println("Valor encontrado en " + central);
} // fin del método de la búsqueda
}
el main:
package javaapplication179;
public class Main {
public static void main(String[] args) {
Binaria r = new Binaria();
r.llenarArray();
r.imprimirVector();
r.ordenarVector();
...
package javaapplication179;
import java.util.*;
public class Binaria {
int vector[] = new int [10];
int vectorBis[] = new int [11] ;
Random aleatorio = new Random();
Scanner entrada = new Scanner(System.in);
public void llenarArray()
{
int nro;
for(int i = 0 ; i < vector.length ; i = i + 1)
{
nro = 0 + aleatorio.nextInt(50); //establece rango de nros aleatorios
vector = nro; //se almacenan los nros aleatorios el vector
}
}
public void imprimirVector()
{
System.out.println();
for(int i = 0; i < vector.length; i = i + 1)
System.out.println(vector); //se imprimen los elementos del vector
}
public void ordenarVector()
{
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;
}
}
imprimirVector();
System.out.println();
}
public void dato()
{
System.out.println();
System.out.println("1. Busqueda");
System.out.println("2. Salir");
System.out.println("Opción elegida: ");
int r = entrada.nextInt();
while(r == 1)
{
System.out.println("Elemento buscado: ");
int d = entrada.nextInt();
busquedaBinaria(d);
System.out.println("1. Busqueda");
System.out.println("2. Salir");
System.out.println("Opción elegida: ");
r = entrada.nextInt();
}
}
public void busquedaBinaria(int x)
{
int bajo = 0;
int alto = vector.length;
int central = (int) ((bajo + alto) / 2);
boolean no_se_encontro = false;
while ((bajo < alto) && (vector[central] != x))
{
if (x < vector[central])
alto = central - 1;
else
bajo = central + 1;
central = (int) ((bajo + alto) / 2);
if (central ==alto)
{
no_se_encontro = true;
break;
}
}
if (no_se_encontro == true)
System.out.println("Valor no encontrado");
else
System.out.println("Valor encontrado en " + central);
} // fin del método de la búsqueda
}
el main:
package javaapplication179;
public class Main {
public static void main(String[] args) {
Binaria r = new Binaria();
r.llenarArray();
r.imprimirVector();
r.ordenarVector();
...
Respuesta de dimondi21
1