¿Cuáles son los 5 mejores algoritmos esenciales (excepto la clasificación) que todo programador debe saber?

  • Ordenar algoritmos
    • Ordenar fusión
    • Ordenación rápida
    • Clasificación de cubo
    • Heap Sort
    • Contando sor
  • Algoritmos de búsqueda
    • Búsqueda binaria
    • Profundidad primera búsqueda
    • Amplitud primera búsqueda
  • Hashing
    • Tablas Hash
    • Hash Mapping
  • Programación dinámica
    • La respuesta de Jonathan Paulson a ¿Cómo debo explicar la programación dinámica a un niño de 4 años?
  • Exponenciación por cuadratura
  • Cadena de coincidencia y análisis
    • KMP
    • Expresiones regulares
  • Algoritmo de prueba de primalidad
    • Tamiz de Eratóstenes
    • Prueba de primalidad de Fermat y prueba de primalidad de Miller-Rabin

  1. Hash constante
  2. Estructuras de datos DAG
  3. Estadísticas básicas
  4. Prueba multivariante
  5. HPC / paralelismo

Codificador aritmético, modelado de contexto basado en trie para ventana deslizante, árboles de decisión de entropía mínima …
Francamente, solo el codificador aritmético está bien representado en el dominio público, los otros están muy simplificados para ser prácticamente significativos …

Sin ningún orden en particular

1. Búsqueda de gráficos (BFS / DFS)
2. Divide y vencerás
3. Alguna estructura de árbol auto balanceada (AVL / Rojo negro)
4. Hashing (no creo que sea necesario entender cómo se implementa, sino más bien cómo son útiles)
5. Programación dinámica

Yo diría que los 5 mejores se basan en los algoritmos que se enseñan en la escuela. Son técnicas realmente.

  • Estructuras de datos básicos
  • Tablas de hash / hash
  • Algoritmos de búsqueda
  • Algoritmos de gráficos
  • Programación dinámica / codiciosa