O algoritmo de pesquisa binária é uma maneira mais eficiente de pesquisar um elemento específico em uma lista classificada. Ao contrário da pesquisa linear, que verifica os elementos sequencialmente, a pesquisa binária divide a lista em metades e compara o elemento de destino com o elemento do meio. Esse processo é repetido até que o elemento de destino seja encontrado ou o intervalo de pesquisa fique vazio.
Como funciona
- Comece com toda a lista classificada.
- Encontre o elemento do meio do intervalo de pesquisa atual.
- Compare o elemento do meio com o valor alvo.
- Se o elemento do meio for igual ao valor de destino, a pesquisa foi bem-sucedida.
- Se o elemento do meio for maior que o alvo, procure na metade esquerda do intervalo.
- Se o elemento do meio for menor que o alvo, procure na metade direita do intervalo.
- Repita as etapas 2 a 6 até que o elemento de destino seja encontrado ou o intervalo de pesquisa fique vazio.
Exemplo
Vamos considerar uma lista ordenada de números inteiros e queremos encontrar o número 34 usando pesquisa binária.
Lista classificada: {12, 23, 34, 45, 56, 67, 89, 90}
- Comece com a lista inteira.
- Elemento do meio: 56(posição 4). Compare com 34.
- 56 é maior que 34. Pesquise na metade esquerda.
- Novo elemento do meio: 23(posição 1). Compare com 34.
- 23 é menor que 34. Pesquise na metade direita.
- Novo elemento do meio: 45(posição 3). Compare com 34.
- 45 é maior que 34. Pesquise na metade esquerda.
- Novo elemento do meio: 34(posição 2). Alvo encontrado.
Exemplo de código em C++
No exemplo dado, a binarySearch
função é usada para encontrar o número 34 em uma lista ordenada de números inteiros. O resultado será a posição 34 na lista(as posições começam em 0) ou -1 se o número não for encontrado.