DEV Community

Cover image for Descubra o Segredo da Busca Binária em Java: A Caça ao Tesouro Eficiente! 📚🔍💎
Antonio Serra
Antonio Serra

Posted on • Updated on

Descubra o Segredo da Busca Binária em Java: A Caça ao Tesouro Eficiente! 📚🔍💎

A busca binária é como encontrar um número em um livro, mas de uma maneira muito inteligente! 📚 Imagine que você tem um livro onde os números estão em ordem, da menor página para a maior. Agora, você quer encontrar o número 42. O que você faz?

  1. Primeiro, você abre o livro na metade (página 50, por exemplo, se o livro tem 100 páginas). 📖

  2. Você olha para o número na página onde você abriu o livro.

  3. Se o número for menor que 42, você sabe que o 42 só pode estar na metade das páginas maiores. Então, você fecha a primeira metade do livro.

  4. Se o número for maior que 42, você sabe que o 42 só pode estar na metade das páginas menores. Então, você fecha a segunda metade do livro.

  5. Agora, você repete o processo a partir do ponto 1, mas agora em apenas metade do livro.

  6. Você continua fazendo isso até encontrar o número 42 ou perceber que ele não está no livro.
    Em Java, podemos fazer a busca binária em um vetor da mesma forma!

Aqui está um exemplo de código:

public class BuscaBinaria {

    public static int buscaBinaria(int[] vetor, int alvo) {
        int esquerda = 0;
        int direita = vetor.length - 1;

        while (esquerda <= direita) {
            int meio = (esquerda + direita) / 2;

            if (vetor[meio] == alvo) {
                return meio; // Encontrou o número!
            } else if (vetor[meio] < alvo) {
                esquerda = meio + 1; // Procurar na metade direita
            } else {
                direita = meio - 1; // Procurar na metade esquerda
            }
        }

        return -1; // O número não está no vetor
    }

    public static void main(String[] args) {
        int[] vetor = {1, 4, 8, 15, 42, 50, 67, 99};
        int alvo = 42;

        int resultado = buscaBinaria(vetor, alvo);

        if (resultado != -1) {
            System.out.println("Encontrou o número " + alvo + " na posição " + resultado);
        } else {
            System.out.println("Número " + alvo + " não encontrado no vetor.");
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Neste código, a função buscaBinaria recebe um vetor ordenado e um número alvo. Ela usa a busca binária para encontrar o número e retorna a posição onde o número foi encontrado ou -1 se não foi encontrado.

A busca binária é uma maneira muito eficiente de encontrar itens em listas ordenadas, como vetores, porque corta o espaço de busca pela metade a cada passo. É como uma caça ao tesouro eficaz! 🏴‍☠️🗺️

LinkedIn: https://www.linkedin.com/in/antonio-rodrigo-wanderley-serra/
GitHub: https://github.com/antoniorws

Top comments (0)