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í.