Está en la página 1de 3

 


Microsoft Visual Studio Solution File, Format Version 12.00 
# Visual Studio 2013 
VisualStudioVersion = 12.0.21005.1 
MinimumVisualStudioVersion = 10.0.40219.1 
Project("{8BC9CEB8­8B4A­11D0­8D11­00A0C91BC942}") = "Pira", "Pira\Pira.vcxproj", 
"{57E7CFA2­B868­4A62­B8FB­2379EB2BA62A}" 
EndProject 
Global 
GlobalSection(SolutionConfigurationPlatforms) = preSolution 
Debug|Win32 = Debug|Win32 
Release|Win32 = Release|Win32 
EndGlobalSection 
GlobalSection(ProjectConfigurationPlatforms) = postSolution 
{57E7CFA2­B868­4A62­B8FB­2379EB2BA62A}.Debug|Win32.ActiveCfg = 
Debug|Win32 
{57E7CFA2­B868­4A62­B8FB­2379EB2BA62A}.Debug|Win32.Build.0 = 
Debug|Win32 
{57E7CFA2­B868­4A62­B8FB­2379EB2BA62A}.Release|Win32.ActiveCfg = 
Release|Win32 
{57E7CFA2­B868­4A62­B8FB­2379EB2BA62A}.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 ​ o​Iabajo​
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
​hile​vamos 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 = tamano­1; 
  int Iabajo = 0; 
  int Icentro; 
  while (Iabajo <= Iarriba) 
    { 
      Icentro = (Iarriba + Iabajo)/2; 
      if (arreglo[Icentro] == clave) 
 return Icentro; 
      else 
 if (clave < arreglo[Icentro]) 
   Iarriba=Icentro­1; 
 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; 

 

También podría gustarte