Como aprender algoritmos y estructuras de datos?

B

Estoy cursando FP DAW, pero me interesa este tema, pero cada vez que busco información no me entero de nada. La mayoría está en inglés, no es que no me apetezca leer en inglés, pero siendo un tema nuevo para mí lo complica un 100%

Por ahora me he registrado en leetcode, tenéis alguna sugerencia para aprender sobre estos temas sin que sea algo infumable para un principiante... Gracias

B

Leyendo, programando, ingleseando...

Yo uso la de Matrix:

P.D: No valgo para profesor.

1
bLiNz

Mates y Probabilidad

1 respuesta
S

te vas a la uned y te matriculas en "estrategias de programación y estructuras de datos" y "programación y estructuras de datos avanzadas"

COSMOS

seguro que algo descubres por aquí https://github.com/ossu/computer-science

1
djamb

Yo tengo mi libro de la facultad y eso no ha cambiado mucho, te lo vendo por 100€

1 respuesta
Konishi

Me suena que hace un tiempo se había recomendado por aquí el libro de Grokkings (unos 15€) + hacer algunos ejercicios de LeetCode (si buscas por google seguro que encuentras distintos listados de cuales hacer para practicar X). No lo he probado pero es algo a lo que había hechado un ojo en su día para repasar.

1 respuesta
B

#7 Este? https://www.amazon.es/Grokking-Algorithms-illustrated-programmers-curious/dp/1617292230
Está a 30€ :(

A donde va la gente que se fotocopian los libros? xD

#3 #6 Tal vez no me haya explicado, quiero aprender para no quedarme en los for de la FP pero tampoco no tener npi de temas más avanzados en programación

2 respuestas
Konishi

#8 Ahora no recuerdo donde lo vi a 15€, igual era una oferta o algo. Si te vale digital, en la página de Manning parece estar a 25.

PD: creo que puedes leer el primer capítulo gratis para ver si te gusta como explican las cosas: https://livebook.manning.com/book/grokking-algorithms/chapter-1/1

1 2 respuestas
djamb

#8 yo he trabajado mucho tiempo en el sector privado y ahora soy profesor de FP, no te hace falta saber cómo funciona una lista enlazada, un backtracking o la ordenación de burbuja.
Total, si realmente necesitas aplicarlo te lo vas a tener que leer por obligación..

2 1 respuesta
B

#10 dicho así tiene sentido, entonces que dirías que es más importante, aprender el lenguaje más demandado tipo Java o librerías tipo React, por que tampoco es algo que se de en la FP...

#9 Gracias! Me lo leeré a ver que tal

1 respuesta
djamb

#11 lo que más te guste, lo importarte es intentar definirte como desarrollador.

1 respuesta
JuAn4k4

Mi recomendación:

Entiende los Arrays, aprende algoritmos de búsqueda (implementa todos) Bubble, Quick Sort, etc
Entiende el bucket sort

Listas anidadas (no valen para nada, pero implementar una ayuda mucho con muchos conceptos).

Hash Tables, implementar una básica en cualquier lenguaje a base de arrays (necesitas aprender algoritmos de búsqueda)

Implementar Set a partir de arrays / listas, puedes implementarlos mejor si quieres con hash tables por ejemplo o con árboles si quieres.

Tipos de Árboles, implementar el básico (binario) y implementar sus dos búsquedas básicas (en anchura y en profundidad), luego buscar sus aplicaciones a Índices por ejemplo. Tienes muchos tipos de árboles, conoce un poco algunos y sus aplicaciones.

Implementar un índice usando ficheros para los datos, y un b-tree para el índice, guardar ambos en ficheros.

Entender e Implementar un A*, para resolver algún problema fácil

Luego ya, te puedes meter en cosas más avanzadas. Esto sería lo básico que te ayudará mucho.

4 2 respuestas
freshnco

"Total, si realmente necesitas aplicarlo te lo vas a tener que leer por obligación.."

Ehm si, si, si...

#1 fíate del comentario de #13 y como añadido: el único lenguaje 100% necesario hoy día es el inglés, añade lo que te recomiendan en el comentario que digo y no tendrás problema en progresar laboralmente

RedSpirit

Pues a mí me parece que tiene sentido lo que comenta #12 sin querer quitar importancia al tema de Algoritmos y estructuras de datos, dependiendo de para donde quieras tirar y estando en 1º de FP hay muchos otros temas a los que dedicar tiempo que pueden aportarte mucho más valor en términos tiempo/beneficio.

Para un % importante de la fuerza de developers actual, grindear leetcode y empollar estos temas solo tiene sentido en el contexto de hacer entrevistas de trabajo. Evidentemente si tienes el interés y las ganas de meterte con el tema pues oye, está genial.

Si quieres una versión bastante más light y al menos quitarte la sensación esa de que en el FP solo os quedáis en los fors, puedes empezar con este curso: https://pll.harvard.edu/course/cs50-introduction-computer-science?delta=0

Eso sí, lo del inglés es totalmente clave. Quítate la pereza porque saber inglés te va resultar mucho más rentable en dinero y condiciones que casi cualquier tema técnico que puedads aprender.

B

#9 Pues leído el capítulo 1, la verdad es que ha sido más ligero de lo que me imaginaba, no se cómo avanzará la cosa, pero con el libro de Grokking Algorithms y lo que dice #13 me vale para mi objetivo por ahora

Pizzelio

En mi caso, que me gustaría aprender por placer (masoquismo) qué me recomendáis? Me gustan los problemas de las webs tipo hackerrank, los concursos de IA de codingame, hacer los adventofcode... Lo que pasa es que la sensación que tengo es que acabo sacando los problemas por fuerza bruta y a base de horas, y lo que de verdad me gustaría es "hacerlos bien".

Leí hace unos meses el Grokking Algorithms y, aunque me pareció interesante y ameno, se me quedó un poco corto la verdad.

Algún consejo? Tiro por leetcode? Algún otro curso / libro?

Gracias!

Usuarios habituales