Algoritam dinamičkog pretraživanja, poznat i kao algoritam "traži dok upisuješ", obično se koristi za implementaciju značajki poput automatskog dovršavanja u trakama za pretraživanje. Ovaj algoritam daje prijedloge u stvarnom vremenu na temelju unosa korisnika i dostupnih podataka.
Kako radi
- Počnite sa skupom podataka koji sadrži popis stavki(npr. riječi, imena ili proizvoda).
- Kako korisnik upisuje svaki znak, ažurirajte upit za pretraživanje.
- Filtrirajte skup podataka na temelju trenutnog upita za pretraživanje.
- Prikažite filtrirane rezultate korisniku u stvarnom vremenu.
Primjer
Razmotrite skup podataka programskih jezika: ["C", "C++", " Java ", " Python ", " JavaScript ", " Ruby ", " Swift "].
- Korisnik tipovi "C". Filtrirani rezultati: ["C", "C++"].
- Korisnik upisuje "C++". Filtrirani rezultati: ["C++"].
- Korisnik upisuje " Java ". Filtrirani rezultati: [" Java ", " JavaScript "].
- Korisnik upisuje "Py". Filtrirani rezultati: [" Python "].
- Korisnik upisuje "Jav". Filtrirani rezultati: [" Java ", " JavaScript "].
Primjer koda u 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;
}
U ovom primjeru dynamicSearch
funkcija kao ulaz uzima skup podataka programskih jezika i korisnički upit. Vraća prijedloge na temelju trenutnog upita. Dok korisnik upisuje znakove, algoritam filtrira skup podataka i prikazuje prijedloge u stvarnom vremenu.
Napomena: stvarna implementacija dinamičkog pretraživanja može biti složenija, uključujući tehnike poput trie struktura ili učinkovitog indeksiranja za velike skupove podataka.