Algoritmo de Búsqueda Binaria

Este método sólo es aplicable a vectores ordenados.
Supongamos que los datos están ordenados de forma creciente. Se compara el valor buscado con la componente central del vector. Si coinciden, se ha encontrado el elemento buscado. En caso contrario, se reduce el intervalo de búsqueda a la mitad izquierda o derecha, según donde pueda encontrarse el valor buscado: si el elemento central es mayor que el valor buscado, la búsqueda debe continuar en la mitad izquierda; si es menor, debe continuar en la mitad derecha.
El algoritmo se repite sobre la mitad seleccionada, concluyendo cuando se encuentra el valor o cuando el intervalo de búsqueda se anula (lo que primero ocurra).
Si el vector contiene valores repetidos, este algoritmo obtendrá uno de ellos ya que necesariamente serán consecutivos.
PSEUDOCÓDIGO
    MÓDULO busqueda_binaria

    DATOS
       PARÁMETROS
           Recibe V() de tipo T
           Recibe N entera
           Recibe X de tipo T
       VARIABLES
           I, IZQ, DER, CEN enteras
    INICIO
           IZQ ← 1
           DER ← N
           CEN ← (N+1)\2         ** división entera
            Mientras ( (V(CEN) ≠ X)   y   (IZQ < DER) ) hacer
               Si ( V(CEN) > X ) entonces
                  DER ← CEN-1
               sino
                  IZQ ← CEN+1
               fin-si
               CEN ← (IZQ+DER)\2
            fin-mientras  
            Si ( V(CEN) = X ) entonces
               Escribir "encontrado en la posición", CEN
            sino
               Escribir "no existe el valor buscado"
            fin-si
    FIN

CÓDIGO C
/*Búsqueda de un elemento en un vector ordenado (de menor a mayor)*/
busBin(int *v, int n, int x)
{
int izq=0;
int der=n-1;
int cen=n/2;

	while((v[cen]!=x) && (izqx)
		{
		der=cen-1;
		}
		else
		{
		izq=cen+1;
		}	
	cen=(izq+der)/2;
	}

	if(v[cen]==x)
	{
	printf("Encontrado %d en posición %d \n",x,cen+1);
	}
	else
	{
	printf("No encontrado %d \n",x);
	}
}

Volver al índice

Volver a Búsqueda y Ordenación Interna



Comentarios

Entradas populares de este blog

Algoritmo de ordenación por mezcla natural

Algoritmo de ordenación por mezcla directa

Algoritmo de Ordenación por Intercambio Directo (Burbuja)