Algorithme de recherche dynamique (Dynamic Search) en C++- Explication, exemple et code

L'algorithme de recherche dynamique, également connu sous le nom d'algorithme "search-as-you-type", est couramment utilisé pour implémenter des fonctionnalités telles que la saisie semi-automatique dans les barres de recherche. Cet algorithme fournit des suggestions en temps réel basées sur l'entrée de l'utilisateur et les données disponibles.

Comment ça fonctionne

  1. Commencez avec un ensemble de données contenant une liste d'éléments(par exemple, des mots, des noms ou des produits).
  2. Au fur et à mesure que l'utilisateur tape chaque caractère, mettez à jour la requête de recherche.
  3. Filtrez le jeu de données en fonction de la requête de recherche actuelle.
  4. Affichez les résultats filtrés à l'utilisateur en temps réel.

Exemple

Considérons un ensemble de données de langages de programmation: ["C", "C++", " Java ", " Python ", " JavaScript ", " Ruby ", " Swift "].

  1. Type d'utilisateur "C". Résultats filtrés : ["C", "C++"].
  2. L'utilisateur tape "C++". Résultats filtrés : ["C++"].
  3. Type d'utilisateur " Java ". Résultats filtrés: [" Java ", " JavaScript "].
  4. L'utilisateur tape "Py". Résultats filtrés : [" Python "].
  5. L'utilisateur tape "Jav". Résultats filtrés: [" Java ", " JavaScript "].

Exemple de code en 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;  
}  

Dans cet exemple, la dynamicSearch fonction prend un ensemble de données de langages de programmation et une requête utilisateur comme entrées. Il renvoie des suggestions basées sur la requête en cours. Au fur et à mesure que l'utilisateur tape des caractères, l'algorithme filtre l'ensemble de données et affiche des suggestions en temps réel.

Remarque: La mise en œuvre réelle de la recherche dynamique peut être plus complexe, impliquant des techniques telles que les structures en trie ou une indexation efficace pour les grands ensembles de données.