2.4 KiB
category | name | contributors | translators | lang | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Algorithms & Data Structures | Binary Search |
|
|
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.