metodos-de-busqueda.ppt

download metodos-de-busqueda.ppt

of 8

Transcript of metodos-de-busqueda.ppt

  • Mtodos de BsquedaUCV - PIURAFundamentos de Programacin

    UCV - LIMA

  • Los problemas ms comunes en la informtica son las de bsqueda en conjunto con las de ordenacin.

    Nmero de preguntas diarias en Google: 400 millones (2006).

    Hoy 694.445 bsquedas cada minuto.

    Por lo tanto, la eficiencia de la bsqueda es importante.

    UCV - PIURA

    UCV - PIURA

  • Bsqueda lineal Bsqueda lineal con marcador Bsqueda binaria Bsqueda binaria simplificada UCV - PIURA

    UCV - PIURA

  • 1Bsqueda Lineal o Secuencial Consiste en ir comparando el elemento que se busca con cada elemento del arreglo hasta que se encuentra. Ejemplo buscar M: 0 1 2 3 4 5 6 7 8 9 UCV - PIURA

    UCV - PIURA

  • BSQUEDA LINEAL - ALGORITMOint BusquedaLineal (int a[ ], int elem, int n) { //Variables locales int i; i=0; while ( ( i < n ) && (a[ i ] != elem) ) i = i +1;

    if ( i < n ) return i ; //Posicin del elemento encontrado else return -1; //Ninguna posicin.}UCV - PIURA

    UCV - PIURA

  • Si el vector est ordenado (de manera ascendente o descendente), es posible aplicar bsqueda binaria.

    La idea es hacer servir la propiedad adicional del vector para acelerar el proceso de bsqueda:

    1) Dividir el vector en dos partes iguales.

    2) Si el elemento del centro del vector es mayor que el elemento buscado, buscar en la primera mitad.

    3) Si el elemento del centro del vector es menor que el elemento buscado, buscar en la segunda mitad. BSQUEDA BINARIAUCV - PIURA

    UCV - PIURA

  • 1Bsqueda BinariaLos elementos del arreglo se encuentran ordenados y no repetidos. En cada iteracin el dominio de bsqueda se divide en 2. Ejm. Buscar 32: 0 1 2 3 4 5 6 7 Medio=(Inicio+Fin)/21era Particn: medio= (0+7)/2=32da Particn: medio= (4+7)/2=53ra Particn: medio= (4+4)/2=4

    UCV - PIURA

    UCV - PIURA

  • int BusquedaBinaria (int a[ ], int elem,int n) { int inicio,final, medio; // variables locales bool encontrado; // declaracin del marcador inicio=0; // primera posicin del vector final=n-1; // ultima posicin del vector encontrado = false; // iniciando del marcador while ( inicio a[medio] ) // Verif. donde esta elem. en el vector inicio = medio + 1; // derecha. else final = medio 1; // izquierda. } } //Verificando el valor del marcador para el valor de retorno if ( encontrado == true) return medio; else return -1;}