Que es un Método de Búsqueda?
La recuperación de información es una de las aplicaciones más importantes de las computadoras.
Tipos de Métodos de Búsqueda?
Búsqueda Secuencial:
•Consiste en recorrer el arreglo elemento a elemento e ir comparando con el valor.
La Búsqueda Binaria
• El proceso comienza comparando el elemento central del arreglo con el valor buscado.
Pasos para hacer una
Búsqueda Secuencia
Búsqueda Secuencia
1.Consiste
en recorrer el arreglo elemento a elemento e ir comparando con el valor buscado.
1.Se
empieza con la primera casilla del arreglo y se observa una casilla tras otra
hasta que se encuentra el elemento buscado o se han visto todas las casillas.
2.El
resultado de la búsqueda es un solo valor, y será la posición del elemento
buscado o cero.
3.El
método de búsqueda lineal funciona bien con arreglos pequeños o para arreglos
no ordenados.
CODIGO JAVA
public class
secuencialdesordenado {
public void
buscar()
{
Scanner leer=new Scanner(System.in);
int i=0;
boolean bandera=false;
int x;
int v[]= new int[10];
for(int
c=0;c<v.length;c++)
{
System.out.println("introduce los datos del
arreglo");
v[c]=leer.nextInt();
}
System.out.println("introduzca elemento a
buscar");
x=leer.nextInt();
do{
if(v[i]==x)
{
bandera=true;
}
else {
bandera=false;
}
i++;
}while(i<v.length && bandera==false);
if(bandera==true)
{
System.out.println("el elemento esta en la posicion "+ i);
}
else if(bandera==false)
{
System.out.println("el elemento no esta en la
lista");
}
}
Método Búsqueda Binaria
Esta búsqueda utiliza un método de “divide y vencerás” para localizar el valor deseado. Con este método se examina primero el elemento central de la lista; si este es el elemento buscado entonces la búsqueda ha terminado. En caso contrario se determina si el elemento buscado está en la primera o segunda mitad de la lista y a continuación se repite el proceso anterior, utilizando el elemento central de esta sublista. Este tipo de búsqueda se utiliza en vectores ordenados
Ventajas:
-
La búsqueda binaria es un método eficiente siempre que el vector esté ordenado.
-
La búsqueda binaria proporciona un medio para reducir el tiempo requerido para buscar en una lista
-
Este método funciona a un 100%
La búsqueda binaria es un método eficiente siempre que el vector esté ordenado.
La búsqueda binaria proporciona un medio para reducir el tiempo requerido para buscar en una lista
Este método funciona a un 100%
Desventajas:
Si los datos del arreglo no están ordenados no hará la búsqueda
El código ya tiene un método de ordenamiento para que ordene los datos en caso de que no los introduzcas Ordenados.
public class BusquedaBinaria
{
public static int busquedaBinaria(int[] Arreglo, int elemento)
{
int i = 0, centro = 0, posicion = 0, inferior = 0, superior = Arreglo.length-1;
while(inferior <= superior)
{
centro = (superior + inferior) / 2;
if (Arreglo[centro] == elemento){
return centro;}
else{
if (Arreglo[centro] > elemento){
superior = centro - 1;}
else{
inferior = centro + 1;}
}
}
return -1;
}
public static void main (String[] args)
{
java.util.Scanner Leer = new java.util.Scanner(System.in);
System.out.print("Tamanio del arreglo:");
int tamanioArreglo = Leer.nextInt();
int[] Arreglo = new int[tamanioArreglo];
for(int i=0; i<Arreglo.length; i++){
System.out.println("Introduce elemento:");
Arreglo[i] = Leer.nextInt();}
int A;
for(int i=0;i<Arreglo.length-1;i++){
for(int j=0;j<Arreglo.length-i-1;j++){
if(Arreglo[j+1]<Arreglo[j]){
A=Arreglo[j+1];
Arreglo[j+1]=Arreglo[j];
Arreglo[j]=A;
}
}
}
System.out.print("Elemento a buscar:" );
int elemento = Leer.nextInt();
System.out.println("dato");
for(int i=0;i<Arreglo.length;i++){
System.out.println(Arreglo[i]);
}
int posicion = busquedaBinaria(Arreglo, elemento);
if(posicion == -1)
System.out.println("\nElemento no encontrado");
else
System.out.println("\nElemento " + elemento + " encontrado en la posicion " + posicion);
}
}
public class BusquedaBinaria
{
public static int busquedaBinaria(int[] Arreglo, int elemento)
{
int i = 0, centro = 0, posicion = 0, inferior = 0, superior = Arreglo.length-1;
while(inferior <= superior)
{
centro = (superior + inferior) / 2;
if (Arreglo[centro] == elemento){
return centro;}
else{
if (Arreglo[centro] > elemento){
superior = centro - 1;}
else{
inferior = centro + 1;}
}
}
return -1;
}
public static void main (String[] args)
{
java.util.Scanner Leer = new java.util.Scanner(System.in);
System.out.print("Tamanio del arreglo:");
int tamanioArreglo = Leer.nextInt();
int[] Arreglo = new int[tamanioArreglo];
for(int i=0; i<Arreglo.length; i++){
System.out.println("Introduce elemento:");
Arreglo[i] = Leer.nextInt();}
int A;
for(int i=0;i<Arreglo.length-1;i++){
for(int j=0;j<Arreglo.length-i-1;j++){
if(Arreglo[j+1]<Arreglo[j]){
A=Arreglo[j+1];
Arreglo[j+1]=Arreglo[j];
Arreglo[j]=A;
}
}
}
System.out.print("Elemento a buscar:" );
int elemento = Leer.nextInt();
System.out.println("dato");
for(int i=0;i<Arreglo.length;i++){
System.out.println(Arreglo[i]);
}
int posicion = busquedaBinaria(Arreglo, elemento);
if(posicion == -1)
System.out.println("\nElemento no encontrado");
else
System.out.println("\nElemento " + elemento + " encontrado en la posicion " + posicion);
}
}