Algoritam dinamičkog pretraživanja (Dynamic Search) u C++- objašnjenje, primjer i kod

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

  1. Počnite sa skupom podataka koji sadrži popis stavki(npr. riječi, imena ili proizvoda).
  2. Kako korisnik upisuje svaki znak, ažurirajte upit za pretraživanje.
  3. Filtrirajte skup podataka na temelju trenutnog upita za pretraživanje.
  4. Prikažite filtrirane rezultate korisniku u stvarnom vremenu.

Primjer

Razmotrite skup podataka programskih jezika: ["C", "C++", " Java ", " Python ", " JavaScript ", " Ruby ", " Swift "].

  1. Korisnik tipovi "C". Filtrirani rezultati: ["C", "C++"].
  2. Korisnik upisuje "C++". Filtrirani rezultati: ["C++"].
  3. Korisnik upisuje " Java ". Filtrirani rezultati: [" Java ", " JavaScript "].
  4. Korisnik upisuje "Py". Filtrirani rezultati: [" Python "].
  5. 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.