ProAlgos: C++
Este projeto está focado na implementação de algoritmos e estruturas de dados em C++, seguindo boas práticas de engenharia de software , tais como:
- Escrevendo código bem documentado
- Aderindo às diretrizes do código
- Escrevendo e passando em testes unitários
- Revendo o código um do outro
Metas
- Implementar algoritmos e estruturas de dados
- Aprenda a ser melhores desenvolvedores de software
- Orientar uns aos outros sobre controle de versão, testes unitários e algoritmos
Como se envolver
Existem algumas maneiras de se envolver.
Quer contribuir com o código aberto e se envolver com o projeto?
- Leia as diretrizes de contribuição
- Bifurque o repositório
- Crie um problema descrevendo o que você gostaria de adicionar ou reivindique um problema que está em disputa
- Crie uma branch e adicione seu código
- Envie uma solicitação pull e faça referência ao problema que ela resolve
Você pode encontrar mais detalhes sobre as etapas acima nas diretrizes de contribuição, portanto, verifique-as.
Quer apenas sugerir um novo algoritmo ou relatar um bug?
Crie um novo problema e nós cuidaremos dele a partir daí. ?
Conteúdo
✅ = possui testes unitários
Algoritmos
Retrocesso
Programação dinâmica
- 0-1 mochila ✅
- Troca de moeda ✅
- Subsequência decrescente mais longa ✅
- Multiplicação em cadeia de matrizes ✅
- Submatriz contígua de soma máxima: algoritmo de Kadane ✅
- Corte de haste ✅
- Seleção de atividades ponderadas ✅
Teoria dos números
- Coeficiente binomial ✅
- Algoritmos euclidianos
- Máximo divisor comum (GCD) ✅
- Algoritmo euclidiano estendido (coeficientes de Bézout) ✅
- Exponenciação rápida ✅
- Enésimo número de Fibonacci
- Algoritmo de tempo linear ✅
- Algoritmo de tempo logarítmico ✅
- Verificação de número perfeito ✅
- Números primos
- Primordial ✅
- Peneira de Eratóstenes (simples) ✅
Procurando
- Pesquisa binária ✅
- Pesquisa linear ✅
- Pesquisa ternária ✅
Classificando
- Classificação de bolha ✅
- Classificação de balde ✅
- Tipo de pente ✅
- Classificação de contagem (estável) ✅
- Classificação de pilha ✅
- Classificação de inserção ✅
- Mesclar classificação ✅
- Classificação rápida ✅
- Classificação de raiz
- Classificação de seleção ✅
- Classificação de casca ✅
Corda
- Subsequência comum mais longa ✅
- Pesquisando (correspondência de padrões)
- Editar problema de distância ✅
- Pátio de manobras ✅
- Permutação
Estruturas de dados
Lista vinculada
- Lista vinculada individualmente ✅
- Lista duplamente vinculada ✅
Fila
Definir
Pilha
Árvore
- Árvore de pesquisa binária ✅
- Árvore Fenwick ✅
Compilando
Para compilar os arquivos de origem, execute make
no diretório C++
. Fazer isso criará binários executáveis no diretório bin
.
Para compilar e executar todos os testes, execute make test
. Isto irá compilar todos os testes (da mesma forma descrita acima) e irá executá-los, exibindo os resultados.
Para executar um teste específico e ver seus resultados, execute-o manualmente no diretório bin
após chamar make
. Por exemplo, este comando (executado a partir de bin
) executaria apenas os testes de unidade para o algoritmo N Queens:
Para remover todos os arquivos criados durante a compilação, execute make clean
. Você não precisa fazer isso toda vez que fizer alterações em um arquivo e quiser recompilá-lo. Basta executar make
e ele recompilará apenas os arquivos cujo conteúdo foi alterado.
Para ver o que acontece em segundo plano durante a compilação e o teste, consulte os seguintes arquivos:
- Makefile
- CMakeLists.txt
- Roteiro de teste
Para obter mais informações sobre make
, consulte o Manual make do GNU. Para obter mais informações sobre CMake
, consulte o Tutorial do CMake.
Mantenedores
Este projeto é mantido ativamente por @alxmjo e inativamente por @faheel.
Licença
Este projeto está licenciado sob os termos da licença do MIT.