Estou aprendendo Java hoje em dia.
Eu quero ser um desenvolvedor corporativo de sucesso. Então, com quais algoritmos e estruturas de dados eu deveria ser bem versado? Quais livros você me recomendaria?
Para ser um desenvolvedor Java de sucesso, preciso conhecer todos os algoritmos avançados, como os fornecidos no CLRS?
Você pode me sugerir uma lista dos tópicos que devo aprender na ordem decrescente de sua prioridade?
Diga-me o nome de alguns tópicos que devo saber. Como pesquisar, classificar, gráficos, árvores etc?
É bom que você esteja ansioso para estender e melhorar suas habilidades de programação. É importante, no entanto, não tratar os algoritmos como um catálogo de itens a serem memorizados. O que você precisa saber para se tornar um bom desenvolvedor (em Java ou qualquer outra coisa) é entender a análise algorítmica.
Você aprende isso aprendendo algumas estruturas e algoritmos de dados selecionados e aprendendo a analisar seu desempenho em termos de tempo e espaço (memória). Pesquisando, classificando, gráficos, árvores, montões, pilhas e todas essas coisas boas. Isso também deve seguir alguns princípios básicos da teoria da computação e da matemática discreta (mesmo que no reino de Java nunca possamos realmente usar esses dois tópicos diretamente - seus benefícios são indiretos).
Separe o aprendizado de uma linguagem de programação (no seu caso, Java) com o aprendizado de análise algorítmica (que é diferente da "memorização" de algoritmos e estruturas de dados).
George T. Heineman, Gary Pollice e Stanley Selkow "Algorithms in a Nutshell" é um bom começo. "Algoritmos", de Sanjoy Dasgupta, Christos Papadimitriou e Umesh Vazirani, é outro bom livro de graduação.
O melhor é fazer cursos de 9 a 12 créditos em programação antes de fazer um curso de graduação em algoritmos de nível 3000. Salvo isso, o estudo individual com os dois livros que mencionei pode ser uma boa alternativa (o estudo individual pode não ser para todos).
Boa sorte!