Autor Tema: Metodos de busqueda en C  (Leído 935 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado arcangel

  • Moderador Global
  • Usuario Avanzado
  • *
  • Mensajes: 438
  • Conócete, acéptate, supérate
Metodos de busqueda en C
« : 26 de Septiembre de 2012, 11:11:42 pm »
Metodos de busqueda

Busqueda Secuencial

También conocido como búsqueda lineal, este método es el más simple de todos. Su funcionamiento se basa en recorrer la estructura de forma secuencial, es decir, elemento por elemento, comparando cada dato con el elementos buscado. Este método termina cuando se encuentra dicho elemento o hasta cuando se llega al final de la estructura de datos.

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int arreglo[10]={12,2,4,68,99,55,4,1,6,10};
    int valor,i;

    printf("Ingrese el valor que desea buscar en el arreglo: ");
    scanf("%i",&valor);
    i=-1;

    do{
        i=i+1;
        if(valor==arreglo[i]){
            printf("valor hallado ");
            break;}
    }while(i!=9);
    if(valor!=arreglo[i])
        printf("Valor no encontrado.");
    return 0;
}

  • Si hay dos elementos del arreglo iguales al elemento buscado el algoritmo encuentra el índice más bajo.
  • No requiere que el arreglo este ordenado
  • El algoritmo se extiende fácilmente a arreglos de mas dimensiones


Busqueda Binaria

La búsqueda binaria es un método más efectivo que la búsqueda lineal. La única condición que debe incluir la estructura de datos para que se pueda aplicar este método es que los elementos de dicha estructura se encuentren ordenados. Esto hace que el método no siempre puede ser aplicado, pero lo vuelve más eficaz.

su funcionamiento es el siguiente:

  • 1 - Elige el elemento que se encuentra en la mitad del arreglo
  • 2 - Si el elemento elegido es igual al elemento buscado, entonces finaliza la búsqueda
  • 3 - Si no, divide el arreglo en dos mitades, una superior y otra inferior
  • 4 - Si las mitades no tienen elementos termina indicando que se no se encuentra el valor
  • 5 - En base al elemento buscado elige una de las dos mitades (superior e inferior)  y repite el primer paso

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
   int arreglo[10]={1,5,9,10,19,20,30,49,50,66};
   int valor,low,hight,medio;

   scanf("%i",&valor);
   low=0;
   hight=10;
   do{
        medio=(low+hight)/2;
        if(arreglo[medio]==valor){
            printf("hallado");
            break;}
        else
            if(valor<arreglo[medio])
                hight=medio-1;
            else
                low=medio+1;
   }while(low<hight);
   if(arreglo[medio]!=valor)
        printf("valor no hallado");
    return 0;
}