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
- Začněte datovou sadou obsahující seznam položek(např. slova, názvy nebo produkty).
- Jakmile uživatel zadá každý znak, aktualizujte vyhledávací dotaz.
- Filtrujte datovou sadu na základě aktuálního vyhledávacího dotazu.
- 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 "].
- Uživatel zadá „C“. Filtrované výsledky: ["C", "C++"].
- Uživatel zadá "C++". Filtrované výsledky: ["C++"].
- Uživatel zadá „ Java “. Filtrované výsledky: [" Java ", " JavaScript "].
- Uživatel zadá „Py“. Filtrované výsledky: [" Python "].
- 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.