Dynamischer Suchalgorithmus (Dynamic Search) in C++ – Erklärung, Beispiel und Code

Der dynamische Suchalgorithmus, auch bekannt als „Search-as-you-type“-Algorithmus, wird häufig verwendet, um Funktionen wie die automatische Vervollständigung in Suchleisten zu implementieren. Dieser Algorithmus liefert Echtzeitvorschläge basierend auf den Eingaben des Benutzers und den verfügbaren Daten.

Wie es funktioniert

  1. Beginnen Sie mit einem Datensatz, der eine Liste von Elementen enthält(z. B. Wörter, Namen oder Produkte).
  2. Aktualisieren Sie die Suchabfrage, während der Benutzer jedes Zeichen eingibt.
  3. Filtern Sie den Datensatz basierend auf der aktuellen Suchabfrage.
  4. Zeigen Sie dem Benutzer die gefilterten Ergebnisse in Echtzeit an.

Beispiel

Betrachten Sie einen Datensatz von Programmiersprachen: ["C", "C++", " Java ", " Python ", " JavaScript ", " Ruby ", " Swift "].

  1. Benutzertyp „C“. Gefilterte Ergebnisse: ["C", "C++"].
  2. Der Benutzer gibt „C++“ ein. Gefilterte Ergebnisse: ["C++"].
  3. Benutzertypen „ Java “. Gefilterte Ergebnisse: [" Java ", " JavaScript "].
  4. Der Benutzer gibt „Py“ ein. Gefilterte Ergebnisse: [" Python "].
  5. Der Benutzer gibt „Jav“ ein. Gefilterte Ergebnisse: [" Java ", " JavaScript "].

Beispielcode 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 diesem Beispiel dynamicSearch verwendet die Funktion einen Datensatz aus Programmiersprachen und eine Benutzerabfrage als Eingaben. Es gibt Vorschläge basierend auf der aktuellen Abfrage zurück. Während der Benutzer Zeichen eingibt, filtert der Algorithmus den Datensatz und zeigt Echtzeitvorschläge an.

Hinweis: Die tatsächliche Implementierung der dynamischen Suche kann komplexer sein und Techniken wie Trie-Strukturen oder effiziente Indizierung für große Datensätze umfassen.