necesito alguien que me colabore con el codigo de busqueda binarias

a-gomez
23 de Abril del 2005
comedidamente solicito a ustedes alguien que me colabore con el codigo de una busqueda binaria en c++ para ver el funcionamiento y poder realizar una aplicacion que me es solicitada
Gracias

Noel Solw
23 de Abril del 2005
Te envio un programa de busqueda binaria recursiva.
Por supuesto que el arreglo de numeros donde se efectua la busqueda tiene que estar ordenado.
Espero que te se util.

// program k7b2.CPP - page 128
// recursion : binary search.
// 29/10/2001
// written in Borland CPP ver 3.1

#include <conio.h>
#include <iostream.h>
#include <iomanip.h>

#define MAX 18
#define NOT_FOUND -1

int a[MAX] = {1,5,11,13,17,19,25,35,42,43,49,54,62,63,71,89,90,91};

void ShowArray()
{
for(int i = 0; i < MAX; i++)
cout << setw(4) << a[i];
cout << endl << endl;
} // SHOW ARRAY

unsigned int GetNum()
{
unsigned int num;
cout << setw(17) << "search number (exit : negative number) ---> ";
cin >> num;
return num;
} // GET NUM

int BiSearch(int num,int bottom,int top)
{
if(bottom > top)
return NOT_FOUND;
int middle = (bottom + top) / 2;
if(a[middle] == num)
return middle;
if(a[middle] < num)
return BiSearch(num,middle+1,top);
else
return BiSearch(num,bottom,middle-1);
} // BI SEARCH

void main()
{
clrscr();
cout << "recursion : binary search."
<< endl << endl;
ShowArray();
int num = GetNum();
while(num >= 0)
{
int place = BiSearch(num,0,MAX);
switch(place)
{
case NOT_FOUND : cout << " not found";
break;
default : cout << " found in place : " << place+1;
}
cout << endl << endl;
num = GetNum();
}
cout << endl << "end of program - good bye ! ! !" << endl;
getch();
} // MAIN