Dinamikus keresési (Dynamic Search) algoritmus C++ nyelven – magyarázat, példa és kód

A dinamikus keresési algoritmust, más néven "keresés közben gépelni" algoritmust, gyakran használják olyan funkciók megvalósítására, mint az automatikus kiegészítés a keresősávokban. Ez az algoritmus valós idejű javaslatokat ad a felhasználó bevitele és a rendelkezésre álló adatok alapján.

Hogyan működik

  1. Kezdje egy tétellistát tartalmazó adatkészlettel(pl. szavak, nevek vagy termékek).
  2. Miközben a felhasználó beírja az egyes karaktereket, frissítse a keresési lekérdezést.
  3. Az adatkészlet szűrése az aktuális keresési lekérdezés alapján.
  4. A szűrt eredményeket valós időben jeleníti meg a felhasználó számára.

Példa

Tekintsünk egy programozási nyelv adatkészletét: ["C", "C++", " Java, " Python ", " JavaScript ", " Ruby ", " Swift "].

  1. A felhasználó "C"-t ír be. Szűrt találatok: ["C", "C++"].
  2. A felhasználó beírja a „C++”-t. Szűrt eredmények: ["C++"].
  3. A felhasználó beírja a következőt: " Java ". Szűrt találatok: [" Java ", " JavaScript "].
  4. A felhasználó beírja a „Py”-t. Szűrt találatok: [" Python "].
  5. A felhasználó beírja a „Jav”-t. Szűrt találatok: [" Java ", " JavaScript "].

Példakód C++ nyelven

#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;  
}  

Ebben a példában a dynamicSearch függvény egy programozási nyelvek adatkészletét és egy felhasználói lekérdezést vesz be bemenetként. Javaslatokat ad vissza az aktuális lekérdezés alapján. Miközben a felhasználó karaktereket ír be, az algoritmus szűri az adatkészletet, és valós idejű javaslatokat jelenít meg.

Megjegyzés: A dinamikus keresés tényleges megvalósítása bonyolultabb lehet, és olyan technikákat foglalhat magában, mint a trie struktúrák vagy a nagy adatkészletek hatékony indexelése.