Obrigado por querer contribuir com este repositório! Para garantir a consistência e qualidade do código, siga as diretrizes abaixo.
- Cada algoritmo deve estar em uma pasta separada dentro de
algorithms/<categoria>/<nome-do-algoritmo>/
. - O arquivo principal do algoritmo deve ser
index.js
. - A documentação do algoritmo deve estar em
README.md
, escrita em português.
algorithms-js/
├── algorithms/
│ ├── sorting/
│ │ ├── quick-sort/
│ │ │ ├── index.js
│ │ │ └── README.md
│ └── searching/
│ ├── binary-search/
│ │ ├── index.js
│ │ └── README.md
- O código deve ser escrito em JavaScript (Node.js) e em inglês.
- Siga as boas práticas de programação, incluindo o uso de nomes claros e verificações de parâmetros.
const elements = [2, 8, 3, 1, 5];
const elementToFind = 3;
function linearSearch(array, item) {
if (!Array.isArray(array)) return -1;
for (let i = 0; i < array.length; i++) {
if (array[i] === item) {
return item;
}
}
return -1;
}
const result = linearSearch(elements, elementToFind);
console.log('Resultado:', result);
A documentação de cada algoritmo deve ser feita no arquivo README.md
, em português.
- Nome do Algoritmo
- Como funciona: Explicação detalhada do funcionamento.
- Código de exemplo: Implementação do algoritmo em JavaScript.
- Explicação do código: Descrição do que cada parte do código faz.
- Complexidade de Tempo: Análise da complexidade temporal e, se aplicável, espacial.
- Quando usar: Situações ideais para o uso do algoritmo.
# Linear Search
A **Busca Linear** percorre todos os elementos de um array até encontrar o item desejado ou até verificar todos os elementos.
## Código de exemplo
const elements = [2, 8, 3, 1, 5];
const elementToFind = 3;
function linearSearch(array, item) {
for (let i = 0; i < array.length; i++) {
if (array[i] === item) {
return item;
}
}
return -1;
}
### Complexidade de Tempo
A busca linear tem complexidade **O(n)**.
- Faça um fork do repositório.
- Crie um novo branch para sua feature ou correção (
git checkout -b feature/nome-da-feature
). - Adicione e comite suas alterações.
- Envie um pull request com uma descrição clara do que foi alterado ou adicionado.
Adicionar implementação do algoritmo Quick Sort
### Descrição
Este pull request adiciona a implementação do algoritmo **Quick Sort** na categoria de algoritmos de ordenação (`sorting`). O algoritmo foi implementado em JavaScript, seguindo as diretrizes de contribuição, e a documentação foi escrita em português, conforme solicitado.
### Mudanças principais:
- Implementação do **Quick Sort** em `index.js`.
- Adicionada documentação do algoritmo em `README.md` com a explicação de como o algoritmo funciona, sua complexidade temporal, e exemplos de uso.
- Incluído um teste básico para validar o algoritmo com diferentes entradas.
### Arquivos adicionados:
algorithms/sorting/quick-sort/index.js
algorithms/sorting/quick-sort/README.md
### Como testar
1. Execute o algoritmo com os seguintes dados de exemplo:
const elements = [10, 5, 3, 7, 2, 8];
const sortedArray = quickSort(elements);
console.log(sortedArray); // Saída esperada: [2, 3, 5, 7, 8, 10]
2. Verifique se o algoritmo ordena corretamente diferentes arrays de números.
### Checklist
- [x] Segui as diretrizes de contribuição descritas em `CONTRIBUTING.md`.
- [x] O código foi escrito em inglês.
- [x] A documentação foi escrita em português.
- [x] Testei minha implementação localmente para verificar a funcionalidade.
-
Título do PR: Deve ser descritivo e conciso, mencionando qual algoritmo foi adicionado ou modificado.
-
Descrição do PR:
- Descrição: Um breve resumo sobre o que o Pull Request está fazendo, qual algoritmo foi adicionado e em qual categoria.
- Mudanças principais: Lista das principais adições ou alterações, como implementação do algoritmo e documentação.
- Arquivos adicionados: Caminho e nomes dos arquivos que foram incluídos no PR.
- Como testar: Um exemplo de como executar o código adicionado para verificar se ele está funcionando corretamente.
- Checklist: Um checklist para garantir que o contribuinte seguiu todas as etapas necessárias, como seguir o padrão de código e documentação.
Esse exemplo ajudará a padronizar os Pull Requests, facilitando a revisão e integração de novas contribuições no repositório.