Durante uno de mis proyectos, tenía una parte del código C ++ que tardaba un par de minutos en ejecutarse en un gran conjunto de datos, y necesitaba acelerarlo. Al perfilar el código, entendí que se debe a colisiones en el STL unordered_map
. Al experimentar con varios algoritmos de hash , me encontré con uno que acelera el código a un par de segundos.
¿Necesitaba saber el algoritmo de hash? Definitivamente no, ya que siempre puedo buscarlo. ¿Pero necesitaba saber que existen tales algoritmos? Tendré que decir que sí . No necesita conocer todos los algoritmos o cómo funcionan todos. Pero un buen punto de partida será saber que tales algoritmos existen.
En C ++, cuando necesite buscar en un std::set
, ¿utilizará el método find en (que se ejecuta en tiempo O(n)
) o el método find incorporado (que se ejecuta en tiempo O(log n)
) en el set? Eso es lo que deberías saber.
- ¿Cuál es la diferencia entre las funciones recursivas estáticas y las funciones recursivas no estáticas C / C ++?
- Cómo revertir un número promedio de números sin los números
- ¿Existe un algoritmo de clasificación que pueda ordenar los n números dados en O (1) donde n> 2?
- ¿Cuáles son las ventajas de los diferentes algoritmos de clasificación?
- ¿Hay algún algoritmo fijo para resolver el cubo de Rubik? Si es así, ¿qué es?