diff --git a/README.md b/README.md index 8d59a45b..cce11a1e 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ Data structure and Algorithm (DSA) ## Explanations - [English](./docs/en) +- [Português](.docs/pt) - [繁體中文](./docs/zh-tw) - [日本語](./docs/ja) diff --git a/docs/pt/CONTRIBUTING.md b/docs/pt/CONTRIBUTING.md new file mode 100644 index 00000000..68c9de2a --- /dev/null +++ b/docs/pt/CONTRIBUTING.md @@ -0,0 +1,29 @@ +# Nome do Algoritmo + +Escrever uma breve descrição de características do algoritmo assim como: +1. Complexidade de tempo +2. Complexidade de espaço +3. Aplicações +4. Nome dos fundadores/criadores +5. etc... + +## Passos + +Descreve o algoritmo de forma clara, simples e de modo que os passos sejam compreendidos por toda a gente. + +## Exemplos + +Ao dar exemplos, identifica o algoritmo com uma amostra de dados iniciais. E continua com eles ao fazer os passos. + +## Implementação + +A ligação(links) para a sua implementação na respetiva linguagem de programação. +NOTA: A ligação(link) deve estar apenas dentro da pasta do algoritmo. + +## Video URL + +Anexa o URL de um vídeo que explica o algoritmo, deve ser em português. + +## Outros + +Qualquer informação é sempre bem-vinda e deve ser incluída nesta secção. \ No newline at end of file diff --git a/docs/pt/Procura/Pesquisa-Binaria.md b/docs/pt/Procura/Pesquisa-Binaria.md new file mode 100644 index 00000000..c9f2f856 --- /dev/null +++ b/docs/pt/Procura/Pesquisa-Binaria.md @@ -0,0 +1,54 @@ +# Pesquisa Binária + +A **Pesquisa Binária**(em inglês Binary Search) é um algoritmo de pesquisa que encontra a posição de um valor dentro da matriz. + +1. Complexidade temporal: O(log n) +2. Complexidade de espaço: O(1) +3. Aplicações: Uma melhor aplicação quando os dados já estão organizados e temos bastantes +4. Nome do fundador: P.F. Windley, A.D. Booth, A.J.T. Colin, e T.N. Hibbard +5. É um dos algoritmos de pesquisa mais populares e usado diariamente. + +## Passos + +1. Encontrar o elemento do meio da matriz +2. Verificar se o elemento que estamos a procurar é igual ao elemento do meio e se sim, retornar o índice e acabar o programa/função. +3. Se o 2º passo não foi verificado, testamos se o elemento a procurar é menor que o elemento do meio, se sim voltamos para o passo 1 e usamos entre o início do matriz e o índice do elemento do meio -1. +4. Se o 3º passo não foi verificado, testamos se o elemento a procurar é maior que o elemento do meio, se sim voltamos para o passo 1 e usamos entre o índice do elemento do meio +1 até ao último índice da matriz. +5. Percorrer o ciclo até o índice inicial ser menor do que o índice final +6. Se o ciclo acabar e nenhum dado for encontrado retornar -1, que significa que o elemento a procurar não existe na matriz dada. +> **Nota:** A matriz deve estar organizada de forma crescente. + +## Exemplos + +Dados de Entrada: **10,20,30,40,50** + +Elemento para procurar: **20** + +Procedimento: + +Elemento do meio: **30** e o elemento a procurar é menor do que 30, logo a pesquisa vai passar a ser do início do matriz até ao índice do meio -1 + +Logo em seguida o elemento do meio é o **20** e o elemento do meio é o elemento que estamos a procurar, logo retornar o índice **1** + +Dados de Saída: **1** + +## Implementações + +- [C](https://github.com/MakeContributions/DSA/blob/main/algorithms/C/searching/Binary-search.c) +- [C++](https://github.com/MakeContributions/DSA/blob/main/algorithms/CPlusPlus/Searching/binary-search.cpp) +- [CSharp](https://github.com/MakeContributions/DSA/blob/main/algorithms/CSharp/src/Search/binary-search.cs) +- [Go](https://github.com/MakeContributions/DSA/blob/main/algorithms/Go/searching/binary-search.go) +- [Java](https://github.com/MakeContributions/DSA/blob/main/algorithms/Java/searching/binary-search.java) +- [JavaScript](https://github.com/MakeContributions/DSA/blob/main/algorithms/JavaScript/src/searching/binary-search.js) +- [JavaScript](https://github.com/MakeContributions/DSA/blob/main/algorithms/JavaScript/src/searching/binary-search-recursive.js) +- [Python](https://github.com/MakeContributions/DSA/blob/main/algorithms/Python/searching/binary_search.py) + +## Video URL + +[Video a explicar pesquisa binária](https://www.youtube.com/watch?v=5T1SDEZzCLo) + +## Outros + +[Wikipédia](https://pt.wikipedia.org/wiki/Pesquisa_bin%C3%A1ria) + +[Exercícios e uma explicação mais detalhada](https://www2.unifap.br/furtado/files/2013/10/Algoritmos-busca-bin%c3%a1ria-vers%c3%a3o-simplificada1.pdf) \ No newline at end of file diff --git a/docs/pt/README.md b/docs/pt/README.md new file mode 100644 index 00000000..c6de0649 --- /dev/null +++ b/docs/pt/README.md @@ -0,0 +1,13 @@ +# Algoritmos + +## Strings + +- [Palíndromo](./Strings/Palindrome.md) + +## Procura + +- [Pesquisa Binária](./Procura/Pesquisa-Binaria.md) + +## Others + +[Como adicionar documentação para um algoritmo?](./CONTRIBUTING.md) diff --git a/docs/pt/Strings/Palindrome.md b/docs/pt/Strings/Palindrome.md new file mode 100644 index 00000000..9a33f7f9 --- /dev/null +++ b/docs/pt/Strings/Palindrome.md @@ -0,0 +1,43 @@ +## Palíndromo + +Um palíndromo é uma palavra, frase, número ou sequência de palavras que são lidas igualmente na forma normal e de trás para frente. + +## Passos + +1. Limpa a string removendo toda a pontuação e espaços em branco e converte todas as letras para minúsculas. +2. Inverte a string limpa (passo anterior). +3. Se a string limpa for igual à string limpa invertida temos um palíndromo. + +## Exemplos + +### Palíndromo de uma palavra +- Coco +- Ovo +- Osso +- Reler +- Salas + +## Frases palíndromas +- Socorram-me, subi no ônibus em Marrocos. +- A base do teto desaba. +- A mãe te ama. +- Arara rara. +- O céu sueco. + +## Implementações +- [C](../../../algorithms/C/strings/palindrome.c) +- [C++](../../../algorithms/CPlusPlus/Maths/palindrome.cpp) +- [C#](../../../algorithms/CSharp/src/Strings/palindrome.cs) +- [Haskell](../../../algorithms/Haskell/strings/palindrome.hs) +- [Java](../../../algorithms/Java/strings/palindrome.java) +- [JavaScript](../../../algorithms/JavaScript/src/strings/palindrome.js) +- [Python](../../../algorithms/Python/strings/palindrome.py) +- [Rust](../../../algorithms/Rust/strings/palindrome/src/main.rs) + +## Video URL +[Video no youtube a explicar o palíndromo](https://www.youtube.com/watch?v=j3yTHI8uSCg) + +## Outros + +[Wikipédia](https://pt.wikipedia.org/wiki/Pal%C3%ADndromo) +[Mais exemplos de palíndromos](https://www.todamateria.com.br/palindromo/) \ No newline at end of file