Menu
Coddy logo textTech

Busca linear

Última atualização

A busca linear (também chamada de busca sequencial) é o algoritmo de busca mais simples: comece no primeiro elemento e compare cada um com o alvo até encontrar uma correspondência ou os elementos acabarem. Ela não faz nenhuma suposição sobre os dados — o array pode estar desordenado, e os elementos podem ser qualquer coisa que possa ser comparada por igualdade.

A animação acima destaca cada comparação enquanto a varredura avança da esquerda para a direita e para no momento em que o alvo aparece. Sua simplicidade custa velocidade: no pior caso todos os elementos são verificados, então ela roda em O(n). Quando os dados estão ordenados, a busca binária encontra a mesma resposta em O(log n) — e se você precisar de dados ordenados primeiro, veja o merge sort.

Complexidade de tempo e espaço

CasoComplexidadeObservações
Melhor casoO(1)O primeiro elemento é o alvo.
Caso médioO(n)Em média, metade dos elementos é verificada antes de um acerto.
Pior casoO(n)O alvo é o último — ou não está presente.
EspaçoO(1)Apenas o índice atual é mantido.

Passo a passo

PassoO que acontece
1Comece no índice 0, o primeiro elemento do array.
2Compare o elemento atual com o valor-alvo.
3Se forem iguais, retorne o índice atual — encontrado.
4Caso contrário, avance uma posição para a direita e repita.
5Se o fim do array for alcançado sem correspondência, o alvo não está presente (retorne -1).

Exemplo resolvido

Buscando 5 em [7, 3, 9, 1, 5, 8, 2]:

ComparaçãoÍndiceElementoResultado
1077 ≠ 5 — continue varrendo.
2133 ≠ 5 — continue varrendo.
3299 ≠ 5 — continue varrendo.
4311 ≠ 5 — continue varrendo.
5455 = 5 — encontrado no índice 4.

Quando usar a busca linear

Use quandoEvite quando
Os dados estão desordenados ou mudam constantementeOs dados estão ordenados — a busca binária é exponencialmente mais rápida
A coleção é pequena, então a simplicidade venceO conjunto de dados é grande e buscado repetidamente
Você só tem acesso sequencial (streams, listas encadeadas)Você pode manter um índice ou uma tabela hash para buscas em O(1)

Uma implementação limpa e executável de Linear Search em Python, JavaScript, Java, C++, C, Pseudocode. Escolha uma linguagem, copie o código ou abra-o já carregado no Playground da Coddy.

Código de Linear Search em Python

Python
1def linear_search(a, target):2    # Scan left to right until the target appears3    for i in range(len(a)):4        if a[i] == target:5            return i6    return -17
8
9nums = [7, 3, 9, 1, 5, 8, 2]10print("Index of 5:", linear_search(nums, 5))11print("Index of 4:", linear_search(nums, 4))
Execute este código no Playground de Python

Perguntas frequentes sobre busca linear

Qual é a complexidade de tempo da busca linear?
O(n) nos casos médio e pior — a varredura pode ter que visitar todos os elementos — e O(1) no melhor caso, quando o primeiro elemento é o alvo. Ela usa O(1) de espaço extra.
A busca linear precisa de dados ordenados?
Não — essa é sua principal vantagem. A busca linear funciona em dados completamente desordenados porque verifica a igualdade de cada elemento; a ordem nunca importa. A busca binária, por outro lado, só funciona em arrays ordenados.
Quando a busca linear é melhor que a busca binária?
Quando os dados estão desordenados e são buscados apenas uma vez (ordenar primeiro custaria O(n log n)), quando a coleção é minúscula, ou quando você só tem acesso sequencial, como um stream ou uma lista encadeada. Para buscas repetidas em arrays ordenados, a busca binária vence.
Busca linear é o mesmo que busca sequencial?
Sim — os dois nomes descrevem o mesmo algoritmo: percorrer os elementos em sequência até encontrar o alvo ou a coleção terminar.
Quantas comparações a busca linear faz em média?
Se o alvo está presente e tem a mesma probabilidade de estar em qualquer posição, cerca de n/2 comparações em média; se o alvo está ausente, exatamente n. Esse crescimento linear é o motivo do nome busca linear.
Coddy programming languages illustration

Domine algoritmos com a Coddy

COMEÇAR