Encontrar la posición en la que se encuentra el elemento E dentro de un vector por el
método de la búsqueda binaria
método de la búsqueda binaria
#include <stdio.h>
#define MAX 100
int a[MAX];
void leer_vector( int a[]){
int i,n;
do {
printf("Ingrese cantidad de elementos menor a 100: ");
scanf("%d",&n);
} while( (n<0)||(n>MAX) );
printf("Ingrese los valores...\n");
for(i=1;i<=n;i++)
{ printf("A[%d]= ",i);
scanf("%d",&a[i]);
}
a[0]=n;
}
void mostrar_vector( int a[] ){
int i,n=a[0];
for(i=1;i<=n;i++)
printf(" - %d ",a[i]);
}
void burbuja( int a[] ){
int i,j,aux,n=a[0];
for(j=1;j<n;j++)
for(i=1;i<n;i++)
if (a[i]>a[i+1])
{ aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
}
}
void busqueda_binaria(int a[]){
int inicio,fin,medio,e,n=a[0];
inicio = 1;
fin = n;
medio = (inicio+fin)/2;
printf("\nIngrese elemento a buscar: ");
scanf("%d",&e);
while (inicio < fin && e != a[medio]){
if(e > a[medio])
inicio = medio+1;
else
fin = medio-1;
medio=(inicio+fin)/2;
}
if (e == a[medio])
printf("\nElemento encontrado en la posicion %d",medio);
else
printf("\nElemento no existe", e);
}
int main() {
printf("\nBUSQUEDA BINARIA\n");
leer_vector(a);
printf("\nVector original: \n");
mostrar_vector(a);
printf("\nVector ordenado: \n");
burbuja(a);
mostrar_vector(a);
busqueda_binaria(a);
printf("\n");
return 0;
}
Comentarios