Dynamický vyhledávací (Dynamic Search) algoritmus v C++- vysvětlení, příklad a kód

Algoritmus dynamického vyhledávání, také známý jako algoritmus „hledejte během psaní“, se běžně používá k implementaci funkcí, jako je automatické doplňování do vyhledávacích panelů. Tento algoritmus poskytuje návrhy v reálném čase na základě vstupu uživatele a dostupných dat.

Jak to funguje

  1. Začněte datovou sadou obsahující seznam položek(např. slova, názvy nebo produkty).
  2. Jakmile uživatel zadá každý znak, aktualizujte vyhledávací dotaz.
  3. Filtrujte datovou sadu na základě aktuálního vyhledávacího dotazu.
  4. Zobrazte filtrované výsledky uživateli v reálném čase.

Příklad

Zvažte datovou sadu programovacích jazyků: ["C", "C++", " Java ", " Python ", " JavaScript ", " Ruby ", " Swift "].

  1. Uživatel zadá „C“. Filtrované výsledky: ["C", "C++"].
  2. Uživatel zadá "C++". Filtrované výsledky: ["C++"].
  3. Uživatel zadá „ Java “. Filtrované výsledky: [" Java ", " JavaScript "].
  4. Uživatel zadá „Py“. Filtrované výsledky: [" Python "].
  5. Uživatel zadá „Jav“. Filtrované výsledky: [" Java ", " JavaScript "].

Příklad kódu v 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;  
}  

V tomto příkladu dynamicSearch funkce bere jako vstup datovou sadu programovacích jazyků a uživatelský dotaz. Vrací návrhy na základě aktuálního dotazu. Když uživatel zadává znaky, algoritmus filtruje datovou sadu a zobrazuje návrhy v reálném čase.

Poznámka: Skutečná implementace dynamického vyhledávání může být složitější a zahrnuje techniky jako trie struktury nebo efektivní indexování pro velké datové sady.