Algoritmi C/C++

Ricerca lineare

La ricerca lineare controlla gli elementi fino al match o alla fine.

Che cos’è Ricerca lineare?

La ricerca lineare controlla gli elementi fino al match o alla fine.

Trova un target in dati non ordinati.

Punti importanti

  • Testa input vuoti, singoli, duplicati e ordinati.
  • Separa correttezza e ottimizzazione.
  • Preferisci la standard library in produzione.

Visualizzatore di Ricerca lineare

O(n)

Usa Avvia o Passo per seguire ogni confronto e spostamento dei dati.

Esempi di codice C e C++

C
Esegui →
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));
}
Output previsto
index=3
C++
Esegui →
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';
}
Output previsto
index=3

Confronto tra C e C++

Entrambe sono O(n) nel caso peggiore. C restituisce -1; C++ restituisce un iteratore confrontato con end.

C

Loop, puntatori, dimensioni e buffer sono espliciti.

C++

Iteratori e algoritmi separano operazione e storage.

Esercizi pratici

Esegui entrambe le versioni e modificale per osservare le diverse garanzie.

  • Traccia ogni confronto.
  • Testa duplicati e valori estremi.
  • Confronta con la standard library.