¿Qué algoritmos debe saber un estudiante de informática de segundo año?

Depende de la pregunta: ¿para qué objetivo? Un ejemplo de una lista de cosas que sería el mínimo requerido que elegiría (muy arbitrariamente) podría incluir:

1. Búsqueda binaria y una buena capacidad para usarla, en particular para crear soluciones para buscar el resultado de un problema que desea resolver.

2. Comprender la programación dinámica y poder crear sus propias soluciones de programación dinámica. Probablemente esto incluiría conocer algunos algoritmos DP básicos, como la subsecuencia común más larga, pero realmente lo importante es poder crear su propio algoritmo similar a LCS, etc., no necesariamente recordar LCS, etc.

(2b. Posiblemente lo mismo podría decirse de los codiciosos algoritmos , estoy a punto de incluirlos en esta lista de las cosas más básicas, pero seguramente están cerca. Además, son muy fáciles).

3. Conocer algoritmos básicos de gráficos y árboles como DFS, BFS, clasificación topológica. Conocer la existencia de algoritmos como Strongly Connected Components, Dijkstra, Ford-Bellman para saber qué buscar en Google si lo necesita.

4. Los algoritmos de clasificación no son realmente tan útiles en este nivel (al menos: hay docenas de formas más útiles que no llegaron a mi lista), pero como se consideran “un canon”, debe esperar a los entrevistadores en varias empresas asumirán el conocimiento del tema a un nivel decente, incluso si esto no fuera realmente útil aparte de la etapa de entrevista.

5. Estructuras de datos . No necesita recordar los detalles de la implementación, porque ya están implementados para usted en las bibliotecas, pero debe conocer los conceptos básicos de los conceptos subyacentes para poder responder preguntas sobre el uso de ellos como “En nuestro proyecto reciente, tenía que hacer ………………. ¿Usaría un TreeMap o un HashMap para esta tarea, cuáles serían los pros y los contras? ”

Pero, de nuevo, esta lista realmente no se aplicaría en una variedad de situaciones en función de para qué necesita esta respuesta. Si desea postularse para las mejores compañías como Google, Facebook, Microsoft, etc., que se centran mucho en algoritmos en sus entrevistas, debe saber más (y / o ?: ser mucho más experto con lo que ya sabe), si es que sobre cualquier tipo de especialidad teórica, debe saber mucho más que solo esta lista, etc. Por otro lado, incluso algunos de estos pueden no ser útiles para usted en su trabajo en función de lo que estará haciendo, sabiendo que algunos algoritmos no incluidos aquí lo ayudarían. Pero esto es lo que personalmente (sin ninguna autoridad) considero los conceptos más básicos que todo estudiante debe saber.

Como estudiante de segundo año, los siguientes son algunos de los algoritmos que debe tener en cuenta:

1. Algoritmos de búsqueda como búsqueda lineal y búsqueda binaria . Cuándo y por qué se usan y sus complejidades de tiempo y espacio . Por ejemplo, la búsqueda binaria se usa en el árbol de búsqueda binaria .

2. Algoritmos de ordenación como fusión de clasificación , clasificación rápida y clasificación de montón . Sus aplicaciones en otros algoritmos. Por ejemplo, la ordenación del montón se usa para implementar la cola prioritaria .

3. Algoritmos transversales básicos de árbol como preorden , inorder y postorder . Qué estructuras de datos se utilizan para estos. Por ejemplo, las listas doblemente vinculadas se usan para implementar árboles binarios.

4. Algoritmos transversales de gráficos básicos como BFS (Breadth First Search) y DFS (Depth First Search) y qué estructuras de datos se utilizan para estos. Por ejemplo, las colas se usan para BFS y las pilas se usan para DFS.

Estos son los algoritmos más fundamentales. Comprenderlos e implementarlos cuidadosamente te ayudará en toda tu carrera. Tómese una buena cantidad de tiempo e interés en cada uno de ellos. Aquí hay algunas sugerencias sobre cómo debe proceder con cada uno de estos:

1. Lea esto de un libro decente primero. CLRS es un buen libro para comenzar. No busques en internet primero. Una buena base es muy necesaria para comprender más casos de uso de estos algoritmos.

2. Intente implementarlos en su lenguaje de programación preferido. Se prefiere un lenguaje de nivel inferior, pero no se exige estrictamente.

3. Si se atasca, intente buscar implementaciones en portales de buenas universidades. Además, solicite a sus amigos interesados ​​que discutan sobre sus implementaciones.

4. Una vez que tenga la confianza suficiente, intente resolver problemas en plataformas como Hackerrank , Hackerearth e Interviewbit.

5. No barajes los pasos anteriores.

1. Diferentes algoritmos de clasificación. Conozca las ventajas y desventajas de cada uno que conoce.

2. Algoritmos de búsqueda simple.

3. ¿Cuáles son los 10 algoritmos que cada estudiante de informática debe implementar al menos una vez en la vida?