
Busqueda binaria en un array
C/Visual C
Publicado el 14 de Enero del 2003 por Sebastian (12 códigos)
20.628 visualizaciones desde el 14 de Enero del 2003
Busqueda binaria en un array.

















/*Id. programa: Busqueda2 *//*Autor: Nieva, Sebastian *//*Fecha de creacion: 19/03/02 *//*Fecha de ultima modificacion: 27/03/02 *//*Tarea: Invierte palabras de una frase *//*Version: 1.0 *//*Lenguaje: ANSI C *//*Requerimientos: Nada *//*Recibe: Nada *//*Entrega: Nada */#include<stdio.h>
#include<conio.h>
#define MAX 5
int ingresar(int *, int);
void ordenar(int *, int);
void mostrar(int *, int);
int buscar(int*,int,int,int);
void main(void)
{int vec[MAX],search;
search=ingresar(vec, sizeof(vec)/sizeof(int));
ordenar(&vec[0], sizeof(vec)/sizeof(int));
mostrar(vec,MAX);
if(buscar(vec,0,MAX,search)==-1)
printf("EL VALOR BUSCADO NO SE ENCONTRO EN EL ARREGLO\n");
else
printf("EL VALOR FUE ENCONTRADO EN LA POSICION %d\n", buscar(vec,0,MAX,search));
getch();
}int ingresar(int *s, int max)
{ int i,key;clrscr();
for(i=0;i<max;i++,s++)
{printf("INGRESE UN NUMERO ENTERO\n");
scanf("%d",s);
}printf("INGRESE EL NUMERO A BUSCAR...\n");
scanf("%d",&key);
return key;
}void ordenar(int *s, int max)
{ int i, j, temp,*inicio=s;
for(i=1;i<max;i++,s=inicio)//Pasadas: cada pasada ordena un valor
for(j=0;j<max-1;j++,s++)//intercambio
{if(*s>*(s+1))
{temp= *(s+1);
*(s+1)= *s;
*s= temp;
} }}void mostrar(int *s, int max)
{int i;
clrscr();
for(i=0;i<max;i++,s++)
printf("%d\n",*s);
}int buscar(int *s, int inicio, int final, int key)
{int medio;
while(inicio<=final)
{medio=(int)(inicio+final)/2 ;
if(*(s+medio)== key)
return medio;
else if(*(s+medio)<key)
inicio=medio+1;
else
final=medio-1;
} return -1;}
Comentarios sobre la versión: Versión 1 (0)
No hay comentarios