Nombre: ordenar vectores de forma binaria
Descripción:
/* ordenar vectores de forma binaria*/
URL: http://www.mygnet.net/codigos/cplusplus/varios/ordenar_vectores_de_forma_binaria.1570
Código Fuente:
#include<stdio.h>
#define tam 20
void main ()
{
// Introducir vector
int vector[tam],n,i,j,aux,nbus,npos,li,ls,m;
printf ("¿Cuantos numeros quieres introducir?n");
scanf("%i",&n);
for (i=0;i<n;i++)
scanf ("%i",&vector[i]);
//ordenar vector
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if (vector[i]>vector[j])
{
aux=vector[i];
vector[i]=vector[j];
vector[j]=aux;
}
}
}
for(i=0;i<n;i++)
printf("%i",vector[i]);
/*para la busqueda binaria, primero hay que buscar la media inferior y superior
y asi hacer cada vez más pequeño al vector para hacer la busqueda
ejemplo: 1,2,3...10 --> media 5 entnces li=5 y ls=10 si buscamos el 7
volvemos a hacer la media hasta encontrar el numero*/
printf ("n¿Que numero quieres buscar?");
scanf ("%i",&nbus);
li=0;
ls=n;
m= (li+ls)/2; // ----> formula para calcular la media
while (li<=ls)
{
if (vector[m]<nbus)
li=m+1;
else
{
if (vector[m]>nbus)
ls=m-1;
else
{
printf("n El numero %i, esta en la posicion %i",nbus,m+1);
break;
}
}
m=(li+ls)/2;
}
if (li>ls)
printf("n No se ha encontrado el numero %i",nbus);
}