Algoritmo di ricerca dinamica (Dynamic Search) in C++- Spiegazione, esempio e codice

L'algoritmo di ricerca dinamica, noto anche come algoritmo di "ricerca durante la digitazione", viene comunemente utilizzato per implementare funzionalità come il completamento automatico nelle barre di ricerca. Questo algoritmo fornisce suggerimenti in tempo reale basati sull'input dell'utente e sui dati disponibili.

Come funziona

  1. Inizia con un set di dati contenente un elenco di elementi(ad esempio parole, nomi o prodotti).
  2. Man mano che l'utente digita ogni carattere, aggiorna la query di ricerca.
  3. Filtra il set di dati in base alla query di ricerca corrente.
  4. Mostra i risultati filtrati all'utente in tempo reale.

Esempio

Considera un set di dati di linguaggi di programmazione: ["C", "C++", " Java ", " Python ", " JavaScript ", " Ruby ", " Swift "].

  1. L'utente digita "C". Risultati filtrati: ["C", "C++"].
  2. L'utente digita "C++". Risultati filtrati: ["C++"].
  3. Tipi utente " Java ". Risultati filtrati: [" Java ", " JavaScript "].
  4. L'utente digita "Py". Risultati filtrati: [" Python "].
  5. L'utente digita "Jav". Risultati filtrati: [" Java ", " JavaScript "].

Esempio di codice in C++

#include <iostream>  
#include <vector>  
#include <string>  
  
std::vector<std::string> dynamicSearch(const std::vector<std::string>& dataset, const std::string& query) {  
    std::vector<std::string> results;  
  
    for(const std::string& item: dataset) {  
        if(item.find(query) != std::string::npos) {  
            results.push_back(item);  
        }  
    }  
  
    return results;  
}  
  
int main() {  
    std::vector<std::string> programmingLanguages = {"C", "C++", "Java", "Python", "JavaScript", "Ruby", "Swift"};  
    std::string userQuery = "Jav";  
  
    std::vector<std::string> suggestions = dynamicSearch(programmingLanguages, userQuery);  
  
    std::cout << "Suggestions for query '" << userQuery << "': ";  
    for(const std::string& suggestion: suggestions) {  
        std::cout << suggestion << ";  
    }  
    std::cout << std::endl;  
  
    return 0;  
}  

In questo esempio, la dynamicSearch funzione accetta un set di dati di linguaggi di programmazione e una query dell'utente come input. Restituisce suggerimenti basati sulla query corrente. Quando l'utente digita i caratteri, l'algoritmo filtra il set di dati e visualizza suggerimenti in tempo reale.

Nota: l'effettiva implementazione della ricerca dinamica può essere più complessa, coinvolgendo tecniche come strutture trie o indicizzazione efficiente per set di dati di grandi dimensioni.