Lenguaje de Programacion
Lenguaje de Programacion II por Ana Haro  
  Inicio
  Introduccion a la estructura de datos
  Arreglos unidimencionales
  Recursividad
  Estructuras basicas de la informacion
  Asignacion secuencial y ligada
  Listas circulares y de doble liga
  Ordenacion por intercambio
  Ordenacion por seleccion
  Ordenacion por insercion
  Ordenaciones mejoradas
  Busqueda binaria
  Arboles
  Recorido de arboles binarios
  Representacion binaria de arboles
  Bibliografía
  Videos
Busqueda binaria
BUSQUEDA BINARIA
La búsqueda secuencial requiere, para el peor de los casos (cuando el elemento a buscar es el ultimo y no se encuentra) recorrer el vector o realizar un numero de comparaciones igual al tamaño del vector. Para vectores con muchos elementos esta búsqueda puede no resultar conveniente.
La búsqueda binaria requiere menos comparaciones (iteraciones ) que la secuencial pero para realizar la búsqueda se requiere que el vector este previamente ordenado.
La búsqueda binaria de un valor en un vector consiste en analizar, en primer lugar, el elemento central del vector, si el valor buscado es menor se buscara por el tramo inferior del vector utilizando la misma técnica, y si no por el tramo superior. En la segunda iteración el tramo a buscar es la mitad (bien derecha, bien izquierda) del vector y el elemento a evaluar es el central de este nuevo tramo. Esto supone claramente que el valor debe haber sido ordenado previamente; en el caso de la figura 1 se asume que los elementos del vector están en orden creciente.

Otra forma de implementarlo es de la siguiente manera:
 
#include <conio.h>
#include <stdio.h>
int a[7],i,j,k,x,temp;
int b[7],m,s,r,w,q;
void main (void)
{
clrscr();
for(x=0; x<7; x++)
{
printf("Introduzca valores para la localidad %d : ",x);scanf("%d",&a[x]);
}
for(j=0;j<7; j++)
{
             for(i=0; i<6; i++)
                         {
             if(a[i] > a[i+1])
                         {
                                   temp=a[i];
                                   a[i]=a[i+1];
                                   a[i+1]=temp;
                         }
                        else
                        {
                        }
                         }
}
for(k=0; k<7; k++)
{
printf("nEl valor de la localidad %d es %d ",k,a[k]);
}
/*---------------------------------------------------------------*/
printf("n Introduzca el valor que desea buscar: ");scanf("%d",&s);
if (a[6]<s)
             {
                         printf("El numero que usted buscaba no se encuentra en el arreglo");
             }
else
{
m=7/2;
r=m;
w=m;
q=7;
for(;;)
            {
             if(a[m]<s)
                         {
             m=(q+m)/2;
             q=q+r;
                         }
                        else if(s<a[m])
                         {
                                    m=(q-w)/2;
                                    q=q-w;
                                   }
                         else if(s==a[m])
                                    {
                                    printf("Valor encontrado en la localidad %d", m+1);
                                    break;
                                    }
            }
}
getch();
}
Hoy habia 5 visitantes (5 clics a subpáginas) ¡Aqui en esta página!
Hora  
   
unidep.prog2@hotmail.com  
   
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis