Pesquisa Binária
A pesquisa binária é um algoritmo eficiente usado para encontrar um elemento específico em uma lista ordenada. Diferente da pesquisa linear, que verifica cada elemento da lista sequencialmente até encontrar o desejado, a pesquisa binária reduz drasticamente o número de comparações necessárias, tornando-se muito mais rápida em listas grandes.
Princípio Básico
O princípio básico da pesquisa binária é dividir repetidamente a lista pela metade até que o elemento desejado seja encontrado ou que a sublista em questão seja vazia. Inicialmente, a pesquisa binária compara o elemento do meio da lista com o valor desejado. Se os dois forem iguais, a pesquisa termina. Se o valor desejado for menor que o valor do meio, a pesquisa continua na metade inferior da lista. Caso contrário, a busca segue na metade superior.
Implementação
A implementação da pesquisa binária pode ser feita de forma iterativa ou recursiva. Aqui está um exemplo de implementação iterativa em Python:
def pesquisa_binaria(lista, alvo):
esquerda, direita = 0, len(lista) - 1
while esquerda <= direita:
meio = (esquerda + direita) // 2
if lista[meio] == alvo:
return meio
elif lista[meio] < alvo:
esquerda = meio + 1
else:
direita = meio - 1
return -1
Nesta função, esquerda
e direita
delimitam as extremidades da sublista em que estamos pesquisando. A cada iteração, ajustamos esses limites com base na comparação do meio
com o alvo
.
Vantagens e Desvantagens
A principal vantagem da pesquisa binária é sua eficiência, com complexidade de tempo ( O(\log n) ), onde ( n ) é o número de elementos na lista. No entanto, ela só pode ser aplicada a listas ordenadas. Outra limitação é que, apesar de ser eficiente em termos de comparações, o algoritmo pode não ser o mais adequado para listas pequenas, onde a pesquisa linear pode ser mais rápida devido à sua simplicidade.
Aplicações
A pesquisa binária é amplamente utilizada em computação, especialmente em algoritmos de busca e estruturas de dados como árvores binárias de busca e tabelas de dispersão (hash tables) ordenadas. É também fundamental em algoritmos de ordenação e na otimização de consultas a bancos de dados.
Resumo
A pesquisa binária é um algoritmo eficiente para encontrar elementos em listas ordenadas, comparando o elemento do meio com o valor desejado e dividindo repetidamente a lista pela metade. Sua implementação pode ser feita de forma iterativa ou recursiva, com uma complexidade de tempo ( O(\log n) ). É especialmente útil em algoritmos de busca e estruturas de dados, apesar de só poder ser aplicada a listas ordenadas e, em alguns casos, não ser a melhor escolha para listas pequenas.