mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-24 10:01:38 +00:00
[binary search/pt-br] Binary Search translation to pt-br (#2424)
* Binary Search translation to pt-br * Dynamic Programming translation to pt-br * DP translation reverted * Binary Search translation to pt-br * Dynamic Programming translation to pt-br * DP translation reverted * Update binary-search-pt.html.markdown
This commit is contained in:
parent
6f3c07ce8a
commit
8425960f4b
77
pt-br/binary-search-pt.html.markdown
Normal file
77
pt-br/binary-search-pt.html.markdown
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
---
|
||||||
|
category: Algorithms & Data Structures
|
||||||
|
name: Binary Search
|
||||||
|
contributors:
|
||||||
|
- ["Abhishek Jaisingh", "http://github.com/abhishekjiitr"]
|
||||||
|
translators:
|
||||||
|
- ["Claudson Martins", "https://github.com/claudsonm"]
|
||||||
|
lang: pt-br
|
||||||
|
---
|
||||||
|
|
||||||
|
# Busca Binária
|
||||||
|
|
||||||
|
## Por Que Busca Binária?
|
||||||
|
|
||||||
|
Operações de busca são um dos principais problemas na Ciência da Computação.
|
||||||
|
Atualmente existem mais de 1 trilhão de buscas por ano, e nós precisamos de
|
||||||
|
algoritmos que possam realizá-las rapidamente. Busca binária é um dos algoritmos
|
||||||
|
fundamentais em ciência da computação. A fim de explorá-la, iremos primeiro
|
||||||
|
construir um conhecimento teórico, e então utilizá-lo para implementar o
|
||||||
|
algoritmo apropriadamente.
|
||||||
|
|
||||||
|
## Introdução
|
||||||
|
|
||||||
|
Uma abordagem simples para implementar uma busca é realizar uma busca linear,
|
||||||
|
mas algoritmos nessa abordagem levam muito tempo, o qual cresce linearmente de
|
||||||
|
acordo com a quantidade ou número de dados. Por exemplo, iniciando do elemento
|
||||||
|
mais a esquerda de arr[] e um a um comparar x com cada elemento de arr[], se x
|
||||||
|
coincide com um elemento, retornar seu índice. Se x não coincide com nenhum dos
|
||||||
|
elementos, retornar -1.
|
||||||
|
|
||||||
|
```
|
||||||
|
Busca Linear: O (n) Tempo Linear
|
||||||
|
|
||||||
|
Busca Binária: O ( log(n) ) Tempo Logarítmico
|
||||||
|
|
||||||
|
```
|
||||||
|
```
|
||||||
|
def busca(arr, x):
|
||||||
|
|
||||||
|
for i in range(len(arr)):
|
||||||
|
|
||||||
|
if arr[i] == x:
|
||||||
|
return i
|
||||||
|
|
||||||
|
return -1
|
||||||
|
|
||||||
|
```
|
||||||
|
## Algoritmo de Busca Binária
|
||||||
|
|
||||||
|
O pré-requisito básico para que uma busca binária funcione é que os dados que se
|
||||||
|
desejam buscar devem estar ordenados (em qualquer ordem).
|
||||||
|
|
||||||
|
### Pseudocódigo
|
||||||
|
|
||||||
|
```
|
||||||
|
A ideia da busca binária é usar a informação de que o array está ordenado e
|
||||||
|
reduzir a complexidade de tempo para O(Log n). Nós basicamente ignoramos metade
|
||||||
|
dos elementos após uma comparação.
|
||||||
|
|
||||||
|
1) Compare x com o elemento do meio.
|
||||||
|
2) Se x coincide com o elemento do meio, retorne o índice do meio.
|
||||||
|
3) Senão Se x é maior que o elemento do meio, então x só pode estar no lado
|
||||||
|
direito do elemento do meio. Portanto nós pulamos para a metade direita.
|
||||||
|
4) Senão (x é menor) pulamos para a metade esquerda.
|
||||||
|
|
||||||
|
Essa é a ideia da implementação recursiva da busca binária.
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### Considerações Finais
|
||||||
|
|
||||||
|
Existem outras formas de busca binária que são muito úteis.
|
||||||
|
|
||||||
|
## Recursos Online
|
||||||
|
|
||||||
|
* [GeeksforGeeks](http://www.geeksforgeeks.org/the-ubiquitous-binary-search-set-1/)
|
||||||
|
* [Topcoder Tutorial](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/)
|
Loading…
Reference in New Issue
Block a user