Algoritmos C/C++

Busca linear em C e C++

Nesta lição, você vai encontrar a posição de um valor em um array não ordenado com o algoritmo de busca linear.

Introdução

A busca linear verifica os elementos um por um, desde o início do array, até encontrar o valor procurado ou chegar ao fim. É o algoritmo de busca mais simples e funciona mesmo quando os dados não estão ordenados.

Pontos importantes

  • Teste com entradas vazias, com um único elemento, com valores repetidos e já ordenadas.
  • Primeiro faça funcionar corretamente, depois otimize.
  • Em código real, prefira as funções prontas da biblioteca padrão.

Visualizador de Busca linear em C e C++

O(n)

Use Executar ou Passo para acompanhar cada comparação e movimento dos dados.

Exemplos de código C e C++

C
Executar →
main.c
#include <stdio.h>

int find(const int *values, int size, int target) {
    for (int index = 0; index < size; ++index) {
        if (values[index] == target) return index;
    }
    return -1;
}

int main(void) {
    int values[] = {14, 3, 27, 8, 19};
    printf("index=%d\n", find(values, 5, 8));
}
Resultado da execução
index=3
C++
Executar →
main.cpp
#include <algorithm>
#include <iostream>
#include <vector>

int main() {
    std::vector values{14, 3, 27, 8, 19};
    auto match = std::find(values.begin(), values.end(), 8);
    std::cout << "index="
              << std::distance(values.begin(), match) << '\n';
}
Resultado da execução
index=3

Comparação entre C e C++

As duas versões têm complexidade O(n) no pior caso. A função find em C retorna um índice do tipo int com sinal, o que permite usar -1 para indicar que o valor não foi encontrado. A versão em C++ usa std::find, que retorna um iterador; se ele for igual a values.end(), o valor não está no array.

C

Laços, ponteiros, tamanhos e buffers temporários são escritos explicitamente.

C++

Iteradores e algoritmos padrão separam o processamento da forma como os dados são guardados.

Exercícios práticos

Execute as duas versões e depois mude o código para observar a diferença de segurança que cada linguagem oferece.

  • Simule cada comparação no papel.
  • Teste com valores repetidos e com valores muito grandes e muito pequenos.
  • Meça o tempo do seu código e compare com a biblioteca padrão.

Pratique com um desafio

Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.

Todos os desafios