miércoles, 21 de septiembre de 2011

Búsqueda binaria



Buscar.h

#pragma once

class Buscar
{
private:
void intercambio(int [],int,int);
public:
int buscar(int[],int,int);
int *ordenarArreglo(int[],int);

};

Buscar.cpp


#include "StdAfx.h"
#include "Buscar.h"

int *Buscar::ordenarArreglo(int V[],int n)
{
for(int i=0;i<n-1;i++)
for(int j=i;j<n;j++)
if(V[i]>V[j])
intercambio(V,i,j);

return V;
}

void Buscar::intercambio(int V[],int i, int j)
{
int t;

t=V[i];
V[i]=V[j];
V[j]=t;
}


int Buscar::buscar(int V[],int n,int dato)
{
ordenarArreglo(V,n);

int mitad,izq,der;
izq=0;
der=n-1;

//el elemento que esta ala izquierda debe de ser menor que el de la derecha
while(izq<=der)
{
//calculamos el elemento central del arreglo hasta encontrar el valor buscado
mitad=(izq+der)/2;
//si el elemento buscado es mayor que el centro entonces buscamos en la segunda mitad del arreglo
if(dato>V[mitad])    
izq=mitad+1;//el primer valor del arreglo pasa hacer la mitad mas 1
else
//si el elemento buscado buscado es menor que la mitad entonces buscamos en la primera mitad del arreglo
if(dato<V[mitad])
der=mitad-1;
else
return mitad; //retornamos el elementoencontrado  
}
return -1;//el elemento no existe en el arreglo}
}

Descargar toda la solución de Clases en C++ para abrir con Visual Studio 2010

No hay comentarios:

Publicar un comentario