Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.21005.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB88B4A11D08D1100A0C91BC942}") = "Pira", "Pira\Pira.vcxproj",
"{57E7CFA2B8684A62B8FB2379EB2BA62A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{57E7CFA2B8684A62B8FB2379EB2BA62A}.Debug|Win32.ActiveCfg =
Debug|Win32
{57E7CFA2B8684A62B8FB2379EB2BA62A}.Debug|Win32.Build.0 =
Debug|Win32
{57E7CFA2B8684A62B8FB2379EB2BA62A}.Release|Win32.ActiveCfg =
Release|Win32
{57E7CFA2B8684A62B8FB2379EB2BA62A}.Release|Win32.Build.0 =
Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
//
Se determinan un indice arriba y un indice abajo
//
Se determina un indice central, Icentro = (Iarriba + Iabajo)/2
//
Evaluamos si vector[Icentro] es igual a la clave de busqueda, si es igual ya encontramos la clave y
devolvemos Icentro.
//
Si son distintos, evaluamos si vector[Icentro] es mayor o menos que la clave, como el arreglo está
ordenado al hacer esto ya podemos descartar una mitad del arreglo asegurandonos que en esa mitad no
está la clave que buscamos
Iarriba
//Reasignamos oIabajo
para obtener la nueva parte del arreglo en donde queremos buscar.
Iarriba , queda igual ya que sigue siendo el tope.volvemos al paso 2.
//
Si la clave no fuese encontrada en algun momento Iabajo > Iarriba
, con un w
hilevamos a controlar
1
esta condición para salir del ciclo en tal caso y devolver (clave no encontrada).
//Un ejemplo claro de Codigo de busqueda binaria es el siguiente:
//Busqueda binaria
//en un arreglo.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
void mostrarArreglo(const int[], int); //prototipo de funcion que
recibe un arreglo constante
int busquedaBinaria(const int[], int, int); //arreglo, tamano, clave
void ordenarArreglo(int[], int); //prototipo que modifica y ordena el
arreglo
void intercambiar(int&, int&); //prototipo, intercambia
los valores de dos elementos
int main()
{
int clave =0;
const int tamano = 15;
int arreglo[tamano] = {25,17,13,16,41,32,12,115,95,84,54,63,78,21,10};
//ordenamos el arreglo para que funcione la busquedaBinaria
ordenarArreglo(arreglo,tamano);
cout << "Elementos del arreglo: " << endl;
mostrarArreglo(arreglo,tamano);
cout << "Indique un valor a buscar y se le devolvera el indice: " << endl;
cin >> clave;
cout<< "Su valor se encuentra en arreglo["<<busquedaBinaria(arreglo,tamano,clave)<<"]" <<
endl;
cout << "Fin del programa :)" << endl;
return 0;
}//fin de main
void mostrarArreglo(const int arreglo[], int tamano)
{
for (int i = 0 ; i < tamano ; i++)
cout << "arreglo[" << i << "]=" << arreglo[i] << endl;
}
int busquedaBinaria(const int arreglo[], int tamano, int clave)
{
int Iarriba = tamano1;
int Iabajo = 0;
int Icentro;
while (Iabajo <= Iarriba)
{
Icentro = (Iarriba + Iabajo)/2;
if (arreglo[Icentro] == clave)
return Icentro;
else
if (clave < arreglo[Icentro])
Iarriba=Icentro1;
else
Iabajo=Icentro+1;
}
return 1;
}
void ordenarArreglo(int arreglo[], int tamano)
{
for (int i = 0; i< tamano 1 ; i++)
for (int j = 0; j< tamano 1 ; j++)
if (arreglo[j] > arreglo[j+1])
intercambiar(arreglo[j],arreglo[j+1]);
}
void intercambiar(int &a, int &b)
{
int tmp = b;
b = a;
a = tmp;
}