
Busqueda binaria en un array
C/Visual C
Publicado el 14 de Enero del 2003 por Sebastian (12 códigos)
20.491 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