Busca binária

Anteriormente, utilizamos um algoritmo de busca chamado busca sequencial. Ele percorre o vetor até encontrar o valor desejado. No pior caso, quando o elemento não existe no vetor, todo o conjunto é percorrido até se perceber que o valor não existe naquela região de memória.

A busca binária é um algoritmo de busca eficiente usado para encontrar um determinado elemento em uma lista ordenada. Atenção: a busca binária assume que o vetor está ordenado.

Este algoritmo é baseado no princípio de dividir e conquistar, o que significa que a lista é dividida em duas metades a cada iteração e a busca continua apenas na metade relevante.

🎬 Vídeo

👩🏾‍💻 A implementação

Confira a implementação de um algoritmo de busca binária na linguagem de programação C:

int buscaBinaria(int vetor[], int tam, int valor){
    int i = 0;
    int f = tam-1;

    while(i<=f){
        int m = (i+f)/2;

        if(vetor[m]==valor) return m;

        if(vetor[m] < valor){
            i = m + 1;
        }
        else{
            f = m-1;        
        }

    }    
    return -1;
}

O algoritmo de busca binária também pode ser implementado de forma recursiva:

int buscaBinariaRecursiva(int vetor[], int inicio, int fim, int valor){
    if(inicio>fim) return -1;

    int meio = inicio + fim / 2;

    if(vetor[meio] == valor) return meio;
    else if(vetor[meio] < valor){
        return buscaBinariaRecursiva(vetor, inicio+1, fim, valor);
    }
    else{
        return buscaBinariaRecursiva(vetor, inicio, fim-1, valor);
    }
}