Algoritem dinamičnega iskanja (Dynamic Search) v C++- razlaga, primer in koda

Algoritem dinamičnega iskanja, znan tudi kot algoritem "iskanje med tipkanjem", se pogosto uporablja za implementacijo funkcij, kot je samodokončanje v iskalnih vrsticah. Ta algoritem ponuja predloge v realnem času na podlagi uporabnikovega vnosa in razpoložljivih podatkov.

Kako deluje

  1. Začnite z naborom podatkov, ki vsebuje seznam postavk(npr. besed, imen ali izdelkov).
  2. Ko uporabnik vnese vsak znak, posodobite iskalno poizvedbo.
  3. Filtrirajte nabor podatkov glede na trenutno iskalno poizvedbo.
  4. Prikažite filtrirane rezultate uporabniku v realnem času.

Primer

Razmislite o naboru podatkov programskih jezikov: ["C", "C++", " Java ", " Python ", " JavaScript ", " Ruby ", " Swift "].

  1. Uporabnik tipi "C". Filtrirani rezultati: ["C", "C++"].
  2. Uporabnik vnese "C++". Filtrirani rezultati: ["C++"].
  3. Uporabnik tipi " Java ". Filtrirani rezultati: [" Java ", " JavaScript "].
  4. Uporabnik vnese "Py". Filtrirani rezultati: [" Python "].
  5. Uporabnik vnese "Jav". Filtrirani rezultati: [" Java ", " JavaScript "].

Primer kode 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 tem primeru dynamicSearch funkcija vzame nabor podatkov programskih jezikov in uporabniško poizvedbo kot vhodne podatke. Vrne predloge na podlagi trenutne poizvedbe. Ko uporabnik vnaša znake, algoritem filtrira nabor podatkov in prikaže predloge v realnem času.

Opomba: Dejanska izvedba dinamičnega iskanja je lahko bolj zapletena in vključuje tehnike, kot so trie strukture ali učinkovito indeksiranje za velike nabore podatkov.