viernes, 16 de septiembre de 2011

Busqueda binaria

Realiza la búsqueda binaria


#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "string"
using namespace std;

void ordenarvector(string *E,int n)
{
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(E[i]>E[j])
{
string aux=E[i];
E[i]=E[j];
E[j]=aux;
}
}
}
}

int busquedaBinaria(string *E,int n, string nombreBuscado)
{
int Iarriba=n-1,Iabajo=0,Icentro;

while (Iabajo <= Iarriba)
{
Icentro = (Iarriba + Iabajo)/2;
if (E[Icentro] == nombreBuscado)
return Icentro;
else
if (nombreBuscado<E[Icentro])
Iarriba=Icentro-1;
else
Iabajo=Icentro+1;
}
return -1;
}

void mostrarVector(string *E,int n)
{
for(int i=0;i<n;i++)
cout<<i+1<<": "<<E[i]<<endl;
}


void main()
{
int n;

string nombreBuscado;

cout<<"Ingrese cantidad de nombres: ";cin>>n;

string *names = new string[n];

for(int i=0;i<n;i++)
{
cout<<"Nombre "<<i+1<<": ";
cin>>names[i];
}

ordenarvector(names,n);
cout<<endl<<"Vector ordenado : "<<endl;
mostrarVector(names,n);

cout<<endl<<"Ingrese el nombre de un alumno a buscar: ";cin>>nombreBuscado;

int index=busquedaBinaria(names,n,nombreBuscado);

if(index == -1)
cout<<"No se encuentra el nombre";
else
cout<<"Encontrado en el indice "<<index+1;

_getch();
}

No hay comentarios:

Publicar un comentario en la entrada