necesito alguien que me colabore con el codigo de busqueda binarias
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
Gracias
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
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