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
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario