RE:busqueda binaria recursiva
//ay amiga ps no es recursiva pero espero q te sirva!!!
#include<iostream>
#include<conio.h>
#include<stdio.h>
#define TAM 10
using namespace std;
class ARRAY
{
int array[TAM];
public:
int tam;
int a_buscar;
//metodos
public:
void scan(void);
void ordenar(void);
void cambio(int,int);
int buscar(int,int);
void print(void);
};
void ARRAY::scan(void)
{
do
{
tam=TAM;
system("cls");
cout<<"Cuantos numeros quieres introducir?";
cout<<"
--> ";
cin>>tam;
}while(tam<=0||tam>TAM);
cout<<endl
<<endl;
for(int cont=0;cont<tam;cont++)
{
cin>>array[cont];
}
}
void ARRAY::ordenar(void)
{
int cont1,mayor;
for(int cont2=0;cont2<tam;cont2++)
{
mayor=0;
for(cont1=0;cont1<tam-cont2;cont1++)
{
if(array[cont1]>array[mayor])
{
mayor=cont1;
}
}
cambio(mayor,tam-cont2-1);
}
cout<<endl;
getch();
}
void ARRAY::cambio(int var1,int var2)
{
int temp;
temp=array[var1];
array[var1]=array[var2];
array[var2]=temp;
}
int ARRAY::buscar(int inicio,int fin)
{
int mitad=(inicio+fin)/2;
if(a_buscar==array[mitad])
cout<<array[mitad];
else
if(a_buscar<array[mitad])
return buscar(inicio,mitad);
else
if(a_buscar>array[mitad])
return buscar(mitad,fin);
else
cout<<"
Numero no encontrado =(";
return -1;
}
void ARRAY::print(void)
{
for(int cont=0;cont<tam;cont++)
{
cout<<array[cont];
}
cout<<endl;
}
main()
{
int a;
ARRAY x;
x.scan();
x.print();
x.ordenar();
cout<<"
Numero a buscar= ";
cin>>x.a_buscar;
a=x.buscar(0,x.tam);
cout<<"
Numero Encontrado";
cout<<endl;
system("pause");
}