Explicacion:
Binaria:
Consiste en dividir intervalos de búsqueda en dos partes , comparando el
elemento buscado con el central. En caso de no ser iguales se redefinen
los extremos del intervalos(según el elemento central sea mayor o menor
que el buscado) disminuyendo el espacio de búsqueda
El proceso concluye cuando el elemento es encontrado.
Este método funciona únicamente para arreglos ordenados .
Con cada iteración del método el espacio de búsqueda se reduce a la
mitad , por lo tanto el número de comparaciones se reduce notablemente.
Esta disminución resulta significativa cuanto más grande sea el arreglo.
Código:
#include<iostream>
using namespace std;
void binaria(int x,int v[],int n);
int main(){
int x,v[100],n;
do{
cout<<"\nnumero de datos: ";
cin>>n;
}while(n<1||n>100);
for(int i=0;i<n;i++){
v[i]=i;
}
cout<<"\nnumero a buscar: ";
cin>>x;
binaria(x,v,n);
system("pause");
return 0;
}
void binaria(int x,int v[],int n){
int izq=1,der=n,cent;
bool bandera=false;
while((izq<=der)&&(bandera==false)){
cent=int(izq+der)/2;
if(x==v[cent]){
bandera=true;
}else{
if(x>v[cent]){izq=cent+1;}else{der=cent-1;}
}
}
if(bandera==true){cout<<"\nel elemento esta en la posicion: "<<cent<<"\n\n";}
else{cout<<"\nel elemento no se encuentra en el arreglo"<<"\n\n";}
}
Descarga el código desde aquí.
