Algoritmo de pesquisa binária com EXEMPLO

⚡ Resumo Inteligente

O algoritmo de busca binária encontra um item em uma lista ordenada dividindo repetidamente o intervalo de busca pela metade e comparando o alvo com o elemento do meio. Também chamado de busca por meio intervalo ou busca logarítmica, é muito mais rápido do que examinar cada elemento individualmente.

  • 📖 Dados classificados: A busca binária só funciona em uma lista de itens ordenada.
  • Reduzir pela metade: Cada etapa compara o alvo com o ponto médio e descarta metade do intervalo.
  • Logarítmico: A busca é executada em tempo O(log n), muito mais rápido que a busca linear.
  • 🎯 Índice intermediário: O ponto médio é encontrado como a soma de (esquerda + direita) dividida por dois.
  • 🔁 Iterativo: O processo se repete até que o elemento seja encontrado ou o intervalo esteja vazio.

Algoritmo de Busca Binária com Exemplo

Antes de aprendermos a busca binária, vamos aprender o que é uma busca.

O que é pesquisa?

Pesquisa é um utilitário que permite ao usuário encontrar documentos, arquivos, mídia ou qualquer outro tipo de dado contido em um banco de dados. A pesquisa funciona com base no simples princípio de combinar os critérios com os registros e exibi-los ao usuário. Desta forma, funciona a função de pesquisa mais básica.

O que é Pesquisa Binária?

A busca binária é um tipo avançado de algoritmo de busca que encontra e recupera dados de uma lista ordenada de itens. Seu princípio básico de funcionamento envolve dividir os dados da lista ao meio até que o valor desejado seja localizado e exibido ao usuário no resultado da busca. A busca binária é comumente conhecida como... pesquisa de meio intervalo pesquisa logarítmica.

Como funciona a pesquisa binária?

A pesquisa binária funciona da seguinte maneira:

  • O processo de busca inicia-se localizando o elemento do meio na matriz de dados ordenada.
  • Em seguida, o valor da chave é comparado com o elemento.
  • Se o valor da chave for menor que o elemento do meio, a pesquisa analisa os valores superiores ao elemento do meio para comparação e correspondência.
  • Caso o valor da chave seja maior que o elemento do meio, a pesquisa analisa os valores inferiores ao elemento do meio para comparação e correspondência.

Algoritmo de Busca Binária (Pseudocódigo)

A busca binária pode ser escrita como uma rotina iterativa curta. Ela mantém dois ponteiros, baixo e alto, e restringe o intervalo até que o alvo seja encontrado ou o intervalo fique vazio.

binarySearch(array, target)
    low = 0
    high = length(array) - 1
    while low <= high
        mid = (low + high) / 2      // floor value
        if array[mid] == target
            return mid
        else if array[mid] < target
            low = mid + 1
        else
            high = mid - 1
    return -1              // target not found

A rotina retorna o índice do alvo em caso de sucesso e -1 quando o valor não está presente. Como o intervalo é reduzido pela metade a cada iteração, o loop é executado no máximo log₂(n) vezes.

Exemplo de pesquisa binária

Vejamos o exemplo de um dicionário. Se você precisar encontrar uma determinada palavra, ninguém percorre cada palavra de maneira sequencial, mas localiza aleatoriamente as palavras mais próximas para pesquisar a palavra desejada.

Exemplo de pesquisa binária

A imagem acima ilustra o seguinte:

  1. Você tem uma matriz de 10 dígitos e o elemento 59 precisa ser encontrado.
  2. Todos os elementos são marcados com índices de 0 a 9. Agora, calcula-se o ponto médio do array. Para isso, pegam-se os valores mais à esquerda e mais à direita do índice e dividem-se por 2. O resultado é 4.5, mas arredondamos para baixo. Portanto, o ponto médio é 4.
  3. O algoritmo remove todos os elementos do meio (4) até o limite inferior, porque 59 é maior que 24, e agora o array fica com apenas 5 elementos.
  4. Agora, 59 é maior que 45 e menor que 63. O valor do meio é 7. Portanto, o valor do índice da direita passa a ser o valor do meio menos 1, que é igual a 6, e o valor do índice da esquerda permanece o mesmo de antes, que é 5.
  5. Neste ponto, você sabe que 59 vem depois de 45. Conseqüentemente, o índice esquerdo, que é 5, também fica no meio.
  6. Essas iterações continuam até que o array seja reduzido a apenas um elemento ou o item a ser encontrado se torne o meio do array.

Exemplo 2

Vejamos o exemplo a seguir para entender como funciona a busca binária.

Exemplo de pesquisa binária

  1. Você tem uma matriz de valores classificados variando de 2 a 20 e precisa localizar 18.
  2. A média dos limites inferior e superior é (l + r) / 2 = 4. O valor que está sendo procurado é maior que o ponto médio, que é 4.
  3. Os valores da matriz menores que o valor médio são descartados da pesquisa, e os valores maiores que o valor médio 4 são pesquisados.
  4. Este é um processo de divisão recorrente até que o item real a ser pesquisado seja encontrado.

Por que precisamos da pesquisa binária?

Os seguintes motivos fazem da busca binária a melhor escolha para ser usada como algoritmo de busca:

  • A busca binária funciona de forma eficiente em dados ordenados, independentemente do tamanho dos dados.
  • Em vez de realizar a pesquisa percorrendo os dados em sequência, o algoritmo binário acessa aleatoriamente os dados para encontrar o elemento necessário. Isso torna os ciclos de pesquisa mais curtos e precisos.
  • A busca binária realiza comparações dos dados ordenados com base em um princípio de ordenação, em vez de usar comparações de igualdade, que são mais lentas e geralmente imprecisas.
  • Após cada ciclo de busca, o algoritmo divide o tamanho da matriz pela metade; portanto, na próxima iteração, ele trabalhará apenas na metade restante da matriz.

Aprenda mais em nosso próximo tutorial sobre Pesquisa Linear: Python, C++ Exemplo.

Busca binária versus busca linear

A busca binária e a busca linear são as duas maneiras mais comuns de encontrar um valor em uma coleção. A tabela abaixo destaca as diferenças entre elas:

Aspecto Pesquisa binária Pesquisa Linear
Requisito de dados Requer dados classificados Funciona com dados ordenados ou não ordenados.
Forma Reduz pela metade o intervalo de pesquisa a cada passo. Verifica cada elemento em sequência.
Complexidade do tempo O (log n) O (n)
Melhor para Grandes conjuntos de dados classificados Conjuntos de dados pequenos ou não classificados

Resumindo, a busca binária é muito mais rápida em grandes conjuntos de dados ordenados, enquanto a busca linear é mais simples e a única opção quando os dados não estão ordenados.

Perguntas Frequentes

A busca binária permite consultas rápidas em estruturas ordenadas por trás de sistemas de IA, como encontrar limites, ajustar hiperparâmetros em um intervalo ou localizar um valor em um índice ordenado de embeddings. Sua velocidade O(log n) mantém essas consultas eficientes.

Sim. Assistentes de IA podem escrever buscas binárias iterativas ou recursivas em Python, Java, ou C++ A partir de uma descrição simples. Fique atento aos erros clássicos de "off-by-one" e "overflow" ao calcular o índice do meio e teste com casos extremos.

A busca binária tem complexidade de tempo O(log n) porque reduz o intervalo de busca pela metade a cada comparação. Sua complexidade de espaço é O(1) para a versão iterativa e O(log n) para a versão recursiva devido à pilha de chamadas.

Não. A busca binária depende de os dados estarem ordenados para poder decidir qual metade descartar. Em dados não ordenados, você precisa ordená-los primeiro ou usar a busca linear, que verifica cada elemento em sequência.

Resuma esta postagem com: