https://github.com/gabrafo/algoritmos-ed
Estudos em algoritmos e estruturas de dados.
https://github.com/gabrafo/algoritmos-ed
algorithms algoritmos cpp data-structures estruturas-de-dados
Last synced: 5 months ago
JSON representation
Estudos em algoritmos e estruturas de dados.
- Host: GitHub
- URL: https://github.com/gabrafo/algoritmos-ed
- Owner: gabrafo
- Created: 2024-10-11T15:48:52.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-01-29T17:41:55.000Z (about 1 year ago)
- Last Synced: 2025-01-29T18:33:03.239Z (about 1 year ago)
- Topics: algorithms, algoritmos, cpp, data-structures, estruturas-de-dados
- Language: C++
- Homepage:
- Size: 18.7 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Repositório de Estudos sobre Algoritmos e Estruturas de Dados
Bem-vindo ao repositório dedicado ao estudo e revisão de algoritmos e estruturas de dados! Este repositório é um projeto pessoal que visa aprofundar meu conhecimento na área, ao mesmo tempo que proporciona recursos e documentação útil para a comunidade.
## Objetivo
O objetivo principal deste repositório é:
- Revisitar e aprimorar o meu conhecimento em algoritmos e estruturas de dados.
- Documentar o meu progresso e descobertas durante o estudo.
- Compartilhar anotações, implementações e recursos que possam ser úteis para outros que estão aprendendo ou revisando esses conceitos.
Embora tenha sido inicialmente criado com base nas atividades e exercícios da disciplina de **Estruturas de Dados** da Universidade Federal de Lavras (UFLA), este repositório **não está restrito à disciplina** e poderá continuar sendo atualizado com novos conteúdos correlacionados a estruturas de dados, algoritmos, ou grafos, mesmo após o término do meu período enquanto aluno da disciplina ou da Universidade Federal de Lavras.
**OBS**: Alguns exemplos de código nas seções de implementação de algoritmos e estruturas de dados são baseados no livro *Entendendo Algoritmos*, mas há também muitos exemplos que eu mesmo desenvolvi. Além disso, pode ser que algumas das anotações ou não estejam 100% completas, não tratando todos os métodos das estruturas de dados.
## Conteúdo
### 1. Anotações, Implementação e Documentação
- **Anotações em Markdown (MD) e em PDF:** Incluem anotações extensas do material da disciplina de **Estruturas de Dados** (ED) e **Grafos e suas aplicações** da Universidade Federal de Lavras (UFLA), além de outros materiais de estudo (como o curso CS50 da Universidade de Harvard). Essas anotações estão sendo atualizadas conforme o avanço na compreensão dos temas, sendo que muitas delas contém representações visuais propostas por mim, como no arquivo `Pilha.md`.
- **Implementação e Documentação de Algoritmos:** Explicações detalhadas dos algoritmos explorados no repositório, alguns advindos de *Entendendo Algoritmos* e outros desenvolvidos por mim. Alguns exemplos incluem:
- **Selection Sort**
- **Quick Sort**
- **Busca Binária**
- **Busca Sequencial**
- **Implementação e Documentação de Estruturas de Dados:** Esta seção inclui explicações detalhadas sobre estruturas de dados, baseadas em minha experiência e nas aulas da disciplina de ED da UFLA. Alguns dos tópicos abordados são:
- **Vetores**
- **Listas encadeadas**
- **Grafos**
- **Árvores AVL**
- **Tabelas Hash**
- **Exercícios do LeetCode:** Além dos exercícios da disciplina, este repositório inclui também resoluções de problemas do **LeetCode**, uma plataforma online conhecida por suas questões desafiadoras de programação. Estes exercícios são uma excelente forma de praticar e aplicar os conceitos de algoritmos e estruturas de dados de forma prática e relevante para o mercado de trabalho.
- **Exercícios de Estruturas de Dados:** A pasta de exercícios contém exemplos puramente da disciplina de ED, com correções automáticas feitas pelo juiz virtual da UFLA.
### 2. Recursos e Links Adicionais
- **[Revisão: Listas, vetores e tabelas Hash](https://youtu.be/Bu5hNuOmtNk?si=XfeEnRW0u5kkY1pU)**: Videoaula gravada por mim sobre listas, vetores e tabelas Hash.
- **[Curso CS50 da Harvard University](https://www.youtube.com/watch?v=3LPJfIKxwWc&list=PLhQjrBD2T381WAHyx1pq-sBfykqMBI7V4):** Curso gratuito de introdução à ciência da computação.
- **[Estruturas de Dados (com C++)](https://www.youtube.com/playlist?list=PLY-_XMpiC9C3Yn-T5Rg0f0te7X8aVUOO0):** Playlist disponibilizada pela Universidade Federal de Lavras (UFLA), destinada à disciplina de Estruturas de Dados, com aulas ministradas pelo professor Joaquim Quintero Uchôa.
- **[Livro Projeto de Algoritmos com Implementações em Pascal e C](https://www2.dcc.ufmg.br/livros/algoritmos/capitulos.php):** Livro disponibilizado gratuitamente pela Universidade Federal de Minas Gerais que, além de tratar de algoritmos e estruturas de dados, também trata de grafos.
Outro livro que está me auxiliando bastante é o livro Grafos de Marco Goldbarg e Elizabeth Goldbarg, bem como o livro Algoritmos: Teoria e Prática de Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest e Clifford Stein.
- **Exercícios e Projetos de Revisão:**
1. Algoritmos
- [Exercícios de Revisão 1](https://github.com/gabrafo/Revisao): Exercícios de revisão para as provas da disciplina de **Introdução aos Algoritmos**, que prenuncia a disciplina de ED na UFLA. Esses exercícios incluem implementações de diversos algoritmos e algumas estruturas de dados.
- [Exercícios de Revisão 2](https://github.com/gabrafo/Revisao1): Mais exercícios de revisão para a mesma disciplina.
- [Projeto Prático com Shell Sort](https://github.com/gabrafo/ProjetoPraticoIAlg): Projeto prático da disciplina de **Introdução aos Algoritmos**, onde foi utilizado o Shell Sort para ordenação eficiente. Este projeto também contém implementações de vários algoritmos.
2. Estruturas de dados
- [Projeto Prático implementando um Sequence Set](https://github.com/gabrafo/ED-Projeto): Projeto prático da disciplina de **Estruturas de Dados**, na qual busquei implementar um Sequence Set, acessando um CSV e o fragmentando em diversos arquivos binários. Também utilizei busca binária para auxiliar na inserção e busca de registros.
### 3. Aviso Legal
As soluções disponibilizadas neste repositório são exclusivamente para fins acadêmicos, sendo que parte delas foi corrigida pelo juiz online da universidade como parte do processo de aprendizagem na disciplina de Estruturas de Dados.
Este repositório tem como objetivo **estudar, revisar e compartilhar conhecimento** sobre algoritmos e estruturas de dados. **Não se destina a substituir ou "copiar" conteúdo oficial da universidade**. Todos os exercícios aqui desenvolvidos foram implementados com o propósito de aprendizado individual.
É fortemente recomendado que os estudantes tentem resolver os exercícios por conta própria antes de consultar as soluções fornecidas aqui, para garantir um processo de aprendizado mais eficaz.
### 4. Agradecimentos
Gostaria de expressar meus sinceros agradecimentos aos professores da UFLA, especialmente aos professores **Joaquim Quintero Uchôa**, **Juliana Greghi**, **Renato Ramos da Silva**, **Mayron Moreira** e a todos os outros educadores que fizeram parte da construção pedagógica das aulas de **Introdução aos Algoritmos**, **Estruturas de Dados** e **Grafos e suas aplicações** e forneceram os conteúdos práticos e teóricos que serviram como base para o aprendizado documentado neste repositório.
### 5. Contribuições
Contribuições são bem-vindas! Se você deseja contribuir com o repositório, pode:
- **Adicionar novas implementações:** Compartilhe suas próprias implementações de algoritmos em diferentes linguagens.
- **Melhorar a documentação:** Faça sugestões para melhorar as anotações e a documentação existente.
- **Compartilhar recursos:** Adicione links e referências a novos materiais de estudo que você achar úteis.
Para contribuir, por favor, siga estas etapas:
1. Faça um fork deste repositório.
2. Crie uma branch para sua contribuição (`git checkout -b minha-contribuicao`).
3. Faça suas alterações e commit (`git commit -am 'Adiciona nova contribuição'`).
4. Faça um push para a branch (`git push origin minha-contribuicao`).
5. Abra um pull request descrevendo suas alterações e melhorias.
## Contato
Para qualquer dúvida ou sugestão, sinta-se à vontade para abrir uma issue ou entrar em contato diretamente.