Isso continua na minha pergunta anterior, na qual perguntei se é necessário aprender algoritmos e estruturas de dados. Eu sinto que sim.
Agora, trabalho em um ambiente em que nunca terei a chance de aprendê-lo experimentando, praticamente ou em qualquer tarefa. Qual é a abordagem correta, como os livros certos, o tipo certo de problemas, o tipo certo de recursos pelos quais posso passar seis meses ou um ano ou dois para aprender algoritmos e estruturas de dados? E também moldo minha mente de uma maneira que possa relacionar problemas com estruturas e algoritmos de dados.
self-improvement
algorithms
data-structures
sushil bharwani
fonte
fonte
Respostas:
Ler.
Não, realmente, leia.
Leia tudo sobre algoritmo e design que você pode encontrar. Existem livros fenomenais por aí. Os livros do algoritmo de Sedgewick são bons. O Manual de Design de Algoritmos da Skiena também é bom. Juntos, esses livros me acompanham em todas as estantes de livros, em todos os empregos em que vou, junto com The Mythical Man-Month.
Então pergunte.
Converse com pessoas que você respeita. Pergunte a eles que pontos de decisão eles tinham e por que eles tomaram as decisões que tomaram. Os bons sempre serão capazes de lhe dizer "Eu escolhi fazer o X porque é melhor que A, B dessa maneira. Eu poderia ter ido com C, mas achei que essa era uma escolha melhor por causa disso".
Em seguida, faça.
Construa coisas. Crie coisas que você nunca usará. Crie coisas que você nunca precisará. Vá escrever um programa que resolva um quebra-cabeça Sudoku. Agora vá fazê-lo novamente. E de novo. Construa 5 maneiras completamente diferentes. Crie um programa que gere quebra-cabeças de Sudoku e alimente-o nos solucionadores. Encontre qual solver é o mais rápido. E depois...
Descubra o porquê.
O "o quê" quase nunca é importante. Quero dizer, sim, é fundamental finalizar o projeto em questão, mas no final, se você souber o "o quê" sem saber o "porquê", poderá não ter feito isso em primeiro lugar. Você tem um ponto de bala no seu currículo. Vá pegar um biscoito e parabenize-se. O "porquê" é muito mais importante que o "o quê".
E para o registro Sudoku foi um exemplo. Passei muito tempo livre fazendo esse exercício com uma tonelada de quebra-cabeças lógicos no Kongregate e aprendi muito no caminho.
http://www.amazon.com/Bundle-Algorithms-Parts-1-5-Fundamentals/dp/020172684X/ http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/ http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/
fonte
Algoritmos
Tive aulas de mágica em grupo quando tinha doze anos. O nome do mago era Joe Carota. Ele fez um truque uma vez e eu soltei: "Como você fez isso?" Ele disse algo naquele dia que ficou comigo desde então.
A resposta de Joe: "Michael, se você realmente quer saber como esse truque é feito, deve descobrir como faria você mesmo".
Bem, é claro que não era isso que eu queria ouvir, mas isso focou minha mente na solução de problemas. Isso foi a solução de problemas da minha perspectiva. Se minha primeira tentativa de resolver o problema deu dezessete etapas e foi realmente desajeitada, a boa notícia foi que eu resolvi o problema.
Então, olhando a solução que eu havia desenvolvido e procurando maneiras de refinar essa solução, aprenderia a otimizar o resultado final. Mais tarde, na minha vida de programação de computadores, descobri que esse processo se chamava "Stepwise Refinement". Eu acho que hoje eles chamam de refatoração.
Funcionou, então ainda funciona agora.
fonte
aqui o link a seguir o redireciona para uma das classes de DS e algoritmos mais bem-sucedidas do MIT que já segui.
http://academicearth.org/courses/introduction-to-algorithms
Espero que você goste desta série de vídeos. Boa sorte !!!
fonte
Veja se você pode fazer um curso on-line ou seja orientado. Na falta disso, isso apareceu em uma rápida pesquisa no Google. Eu apenas participei de uma aula sobre isso na primavera passada (primeiro, mudei do EE para o software) e não foi tão difícil de entender se você entendeu bem os indicadores .
fonte
Se você não conseguir fazer um curso sobre isso, recomendo o Manual de design do algoritmo. Há um PDF gratuito aqui , mas vale a pena obter o livro real se você planeja programar profissionalmente.
fonte
Tente se inscrever em um curso de graduação em estruturas de dados e algoritmos; é sempre bom aprender esses conceitos ao lado de outros.
fonte
Comece a trabalhar na solução de problemas clássicos na esfera online , por exemplo , o site pode não parecer tão chique, mas garoto, esses são problemas de programação clássicos que exigem muitas das importantes estruturas de dados e algoritmos em uso atualmente.
As soluções podem ser enviadas em uma variedade de linguagens de programação, de C / C ++ a JavaScript, Lisp, Smalltalk, assembler e mais 40. Assim, você pode se concentrar inteiramente na solução do problema com qualquer linguagem de programação com a qual se sinta confortável.
fonte
CLRS
Este é de longe o meu recurso favorito. Usei-o no meu curso de graduação em algoritmos de ciência da computação e acabei comprando o livro 4 anos depois para ler sozinho para me preparar para meus cursos de MS Comp Sci. Não é uma leitura fácil, por qualquer meio, mas se você trabalhar para entender algumas das provas / matemática apresentadas e depois implementar o pseudo-código em seu (s) idioma (s) favorito (s), valerá a pena o preço um tanto alto. O Manual de Projeto de Algoritmo que outros mencionaram também é um ótimo recurso para a identificação de problemas de aprendizagem, mas eu achei o CLRS melhor para detalhes puros.
fonte
Você sempre pode tentar algo como isto: http://codekata.pragprog.com/
Eu sempre aprendi melhor pensando nisso, em vez de ler. No entanto, você deve ter documentação / material de leitura disponível para procurar respostas.
fonte
Compre este livro , Empreste isto ou Roube isto! Resto seguirá :)
Introdução aos Algoritmos por Rivest e Cormen. Será muito difícil seguir inicialmente assim que você passar pela explicação do Mergesort na introdução. Tudo se desenrola para você lindamente.
Além disso, você ficará melhor se resolver os problemas apresentados no livro. Eu realmente nunca quis me separar do livro, mesmo depois de me formar na faculdade. Isso é bom.
fonte