Estrutura de Dados E Algoritimos
O que exatamente é Estrutura De Dados e Algoritimos?
Estou estudando Python e pela primeira vez me deparei com isso, não sei o que é, apenas sei que é complicado e que dizem que vale apena estudar.
Poderiam me informar o porque estudar esse conteudo? Segue abaixo o que vou estudar. Vale apena? Vai me ajudar como progamador?
Opa, tudo beleza? Então, vou falar um um pouco sobre cada um.
Estrutura de dados, como o próprio nome sugere, são formas de se organizar e manipular os dados, essas diferentes formas são aplicadas dependendo do contexto (por exemplo, em determinado problema uma estrutura do tipo Fila atende melhor do que do tipo Pilha), cada um tem suas particularidades, além de que estão presentes em programas do cotidiano de um programador, como, por exemplo: Serviços de Mensageria como o Kafka (Fila), callstack do JS (Pilha), entre tantos outros.
Já os algoritmos, pode-se dizer de forma grosseira que são maneiras de trabalhar com as estruturas, por exemplo: algoritmos de busca e ordenação. Existem inúmeros cenários onde uma busca (ou ordenação) deve ser feita da forma mais rápida e performática possível, por isso, como programador, é importante ter um conhecimento prévio desses algoritmos. Um bom exemplo de aplicação de algoritmos são os aplicativos de mapas, onde eles calculam de maneira super rápida o melhor trajeto para determinado local, para isso são utilizados algoritmos para estruturas de grafos.
Sei que foi uma explicação bem superficial, mas espero que tenha sido claro e que tenha te dando um incentivo nesse ponto kkkk. É isso, tmj!
Aproveitando, acho que deu pra ver como todo mundo acha que isso é importante, e é mesmo. Acho que pra você aprimorar mais ainda seus conhecimentos, vc pode escrever tutorias ou resumos do que você aprendeu sobre cada assunto. Pode ser pra postar por aqui mesmo um "diário de estudo em estrutura de dados", acho que vai agregar bastante valor.
Estrutura de Dados e algoritmos não é algo que se pergunte "se vale a pena" é matéria obrigatória para quem quer se tornar um bom programador.
Seguinte, em linguagens de alto nível como python3 // cpp algumas dessas estruturas já vem declaradas. Como no caso do Sorting e do Hash table(que você conhece como algoritmo).
Mas tem várias estruturas que podem otimizar ao maximo seu código que não foram declarados: - Stack - Linked List - Queue - Trees - Heaps
Por exemplo, tu quer fazer o cadastro de 10.000 pessoas simultâneas no dia de pico de uma black friday, utilizando apenas async//await tu pode até achar uma solução temporária mas a mágica do sistema não quebrar seria alocar recursos na implementação de uma fila, onde um worker escreveria o usuário no banco de dados, enquanto outro worker colocaria mais pessoas na fila.
O mesmo vale para as outras estruturas
Acho que saber isso é o que diferencia devs bons de devs ruins.
Todo programa precisa de estruturas de dados: Armazenar uma lista de usuários, uma lista de favoritos, um dicionário de valores etc. Mas, qual é a vantagem de cada tipo de estrutura e porquê escolher entre uma ou outra?
A estrutura certa depende do que você quer. As estruturas tendem a cumprir quatro objetivos:
- Acesso
- Gravação
- Busca
- Exclusão
Algumas são mais rápidas em uns pontos, outras em outros. Não existe uma estrutura de dados que é boa em todos os 4 pontos. Por isso é importante saber estrutura de dados. Em algum momento você precisará de uma estrutura que tenha acesso rápido e busca rápida, e não se importará com gravação e exclusão tão rápidos assim.
Olá, campos.
Segue 2 livros muito bons que eu li esse ano e me ajudaram muito a entender melhor essa matéria importantissima:
Quando for estudar algoritmos, dá uma olhada nesse site que recomendei nesse post. Me ajudou bastante a entender e visualizar do que se tratava cada estrutura de algoritmo! Boa sorte nos estudos!!
Isso é simplismente a base que todo bom programador deveria ter, em uma entrevista em uma big tech por exemplo, se você não souber isso, será descartado imediatamente