martes, 26 de noviembre de 2013

METODOS DE BUSQUEDA

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.

 
  • La búsqueda de información está relacionada con las tablas para consultas.
  • La búsqueda es una operación que tiene por objeto la localización de un elemento dentro de la estructura de datos.
  •  Estas tablas contienen una cantidad de información que se almacenan en forma de listas de parejas de datos.

 

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
 
 
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% 

Desventajas:
  • Si los datos del arreglo no están ordenados no hará la búsqueda

Este método Necesita un método de ordenamiento como: Burbuja, Quicksort, shell sort, etc. Para que así funcione bien.

 

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);
}
}