Muestra las diferencias entre dos versiones de la página.
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 ==== |