Encontrar la posición de un elemento por el método de la búsqueda binaria

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

#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