Quero ser um desenvolvedor Java corporativo de sucesso. Com quais algoritmos e estruturas de dados devo ser bem versado? Quais livros você recomendaria para mim?
Para ser um desenvolvedor Java de sucesso, preciso conhecer todos os algoritmos avançados, como os fornecidos no CLRS ?
Você pode sugerir uma lista dos tópicos que devo aprender na ordem decrescente de sua prioridade?
Devo saber:
- Procurando?
- Classificação?
- Gráficos / Árvores?
etc?
java
learning
algorithms
data-structures
Chankey Pathak
fonte
fonte
Respostas:
Introdução aos algoritmos de Cormen é um bom livro para alguns fundamentos teóricos básicos.
Dito isto, a maioria dos algoritmos e estruturas de dados já foram codificados, testados e otimizados por outros, e não há razão para reimplementá-los mais uma vez. Para ser um desenvolvedor Java de sucesso, é necessário conhecer o The Collections Framework de dentro para fora.
fonte
Se você deseja ser um programador de qualquer tipo, precisa entender todas as estruturas básicas de dados (pilhas, filas, matrizes, listas vinculadas, hashtables, árvores etc.) com mais detalhes. O suficiente para que você possa implementar qualquer um deles por si mesmo, se você se encontrar em um mundo sem estruturas de coleções para fazer o trabalho por você.
No que diz respeito aos algoritmos, parece-me que eles são mais ferramentas para trabalhos, enquanto suas estruturas de dados são blocos de construção fundamentais. Não acho que seja tão importante conhecer os detalhes de como implementar todos os algoritmos nos quais você pode se deparar. O que você precisa ser capaz de avaliar é avaliar o desempenho de um algoritmo para um determinado objetivo. Às vezes, a diferença entre a pesquisa em profundidade e a largura em primeiro lugar ou o tipo de classificação que você realiza nos seus dados pode fazer uma diferença muito grande no desempenho ou no sucesso geral do seu código, portanto, saber como julgar isso é muito importante.
fonte
Além das outras respostas, gostaria apenas de acrescentar que o estudo de algoritmos não é apenas para conhecer técnicas conhecidas (que ainda são importantes), mas também para entender o processo de pensamento que é criado uma solução para um problema que você encontra na vida real, não necessariamente bem conhecido.
fonte
É 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!
fonte