Herramientas de usuario

Herramientas del sitio


algoritmos-oia:busqueda-binaria

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
algoritmos-oia:busqueda-binaria [2018/01/19 15:13]
santo
algoritmos-oia:busqueda-binaria [2018/01/20 14:08] (actual)
santo
Línea 219: Línea 219:
     // lower_bound devuelve un *iterador*, que apunta a la posicion que antes llamamos "​high"​     // lower_bound devuelve un *iterador*, que apunta a la posicion que antes llamamos "​high"​
     auto it = lower_bound(elementosOrdenados.begin(),​ elementosOrdenados.end(),​ numeroDeseado);​     auto it = lower_bound(elementosOrdenados.begin(),​ elementosOrdenados.end(),​ numeroDeseado);​
-    return it!=elementosOrdenados.end() && *it==numeroDeseado; ​// Pensar por que pedimos high<N+    ​// Lo que antes era high<N, ahora es que el iterador no sea el .end() 
 +    ​return it!=elementosOrdenados.end() && *it==numeroDeseado;​
 } }
 </​code>​ </​code>​
  
 +También se podría haber utilizado la función ''​binary_search''​ ya existente en C++. Conocer las funciones existentes muy útil para programar más rápido y con menos errores, pero no reemplaza saber programar nuestra búsqueda binaria, ya que no siempre nos sirve el resultado exacto de las funciones estándar, o a veces necesitamos utilizar las **ideas** de los algoritmos pero **modificadas** para nuestro caso particular.
  
 === Posibles bugs === === Posibles bugs ===
Línea 292: Línea 294:
  
 De cualquier manera, en la mayoría de los problemas nos evitamos estos inconvenientes de overflow utilizando ''​long long'',​ y no es necesario recurrir a medidas extremas (porque los números o bien "son mucho más chicos que el máximo"​ o bien son "mucho más grandes que el máximo",​ de forma que este truquito no afecte). De cualquier manera, en la mayoría de los problemas nos evitamos estos inconvenientes de overflow utilizando ''​long long'',​ y no es necesario recurrir a medidas extremas (porque los números o bien "son mucho más chicos que el máximo"​ o bien son "mucho más grandes que el máximo",​ de forma que este truquito no afecte).
 +
 +==== Máximos y mínimos en funciones unimodales ====
 +
 +Es posible utilizar búsqueda binaria para encontrar máximos y mínimos en funciones unimodales: esto se explica en [[algoritmos-oia:​busqueda-ternaria|este artículo]].
  
 ==== Material adicional ==== ==== Material adicional ====
algoritmos-oia/busqueda-binaria.1516374811.txt.gz · Última modificación: 2018/01/19 15:13 por santo