Dynaaminen (Dynamic Search) hakualgoritmi C++:ssa- selitys, esimerkki ja koodi

Dynaamista hakualgoritmia, joka tunnetaan myös nimellä "hae kirjoittaessasi" -algoritmi, käytetään yleisesti ominaisuuksien, kuten automaattisen täydennyksen, toteuttamiseen hakupalkeissa. Tämä algoritmi tarjoaa reaaliaikaisia ​​ehdotuksia käyttäjän syötteen ja käytettävissä olevien tietojen perusteella.

Kuinka se toimii

  1. Aloita tietojoukolla, joka sisältää luettelon kohteista(esim. sanat, nimet tai tuotteet).
  2. Kun käyttäjä kirjoittaa jokaisen merkin, päivitä hakukysely.
  3. Suodata tietojoukko nykyisen hakukyselyn perusteella.
  4. Näytä suodatetut tulokset käyttäjälle reaaliajassa.

Esimerkki

Harkitse ohjelmointikielien tietojoukkoa: ["C", "C++", " Java ", " Python ", " JavaScript ", " Ruby ", " Swift "].

  1. Käyttäjä kirjoittaa "C". Suodatetut tulokset: ["C", "C++"].
  2. Käyttäjä kirjoittaa "C++". Suodatetut tulokset: ["C++"].
  3. Käyttäjä kirjoittaa " Java ". Suodatetut tulokset: [" Java ", " JavaScript "].
  4. Käyttäjä kirjoittaa "Py". Suodatetut tulokset: [" Python "].
  5. Käyttäjä kirjoittaa "Jav". Suodatetut tulokset: [" Java ", " JavaScript "].

Esimerkkikoodi C++:ssa

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

Tässä esimerkissä dynamicSearch funktio ottaa syötteinä ohjelmointikielten tietojoukon ja käyttäjän kyselyn. Se palauttaa ehdotuksia nykyisen kyselyn perusteella. Kun käyttäjä kirjoittaa merkkejä, algoritmi suodattaa tietojoukon ja näyttää reaaliaikaisia ​​ehdotuksia.

Huomautus: Dynaamisen haun varsinainen toteutus voi olla monimutkaisempaa, ja siihen voi liittyä tekniikoita, kuten trie-rakenteita tai tehokasta suurten tietojoukkojen indeksointia.