Algoritm de căutare dinamică (Dynamic Search) în C++- Explicație, Exemplu și Cod

Algoritmul de căutare dinamică, cunoscut și sub denumirea de algoritm „căutare pe măsură ce tastați”, este folosit în mod obișnuit pentru a implementa funcții precum completarea automată în barele de căutare. Acest algoritm oferă sugestii în timp real bazate pe intrarea utilizatorului și pe datele disponibile.

Cum functioneaza

  1. Începeți cu un set de date care conține o listă de articole(de exemplu, cuvinte, nume sau produse).
  2. Pe măsură ce utilizatorul introduce fiecare caracter, actualizați interogarea de căutare.
  3. Filtrați setul de date în funcție de interogarea de căutare curentă.
  4. Afișați rezultatele filtrate pentru utilizator în timp real.

Exemplu

Luați în considerare un set de date de limbaje de programare: ["C", "C++", " Java ", " Python ", " JavaScript ", " Ruby ", " Swift "].

  1. Tipuri de utilizator „C”. Rezultate filtrate: ["C", "C++"].
  2. Tipuri de utilizator „C++”. Rezultate filtrate: [„C++”].
  3. Tipuri de utilizator " Java ". Rezultate filtrate: [" Java ", " JavaScript "].
  4. Tipuri de utilizator „Py”. Rezultate filtrate: [" Python "].
  5. Tipuri de utilizator „Jav”. Rezultate filtrate: [" Java ", " JavaScript "].

Exemplu de cod în 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;  
}  

În acest exemplu, dynamicSearch funcția ia ca intrări un set de date de limbaje de programare și o interogare a utilizatorului. Returnează sugestii bazate pe interogarea curentă. Pe măsură ce utilizatorul introduce caractere, algoritmul filtrează setul de date și afișează sugestii în timp real.

Notă: implementarea efectivă a căutării dinamice poate fi mai complexă, implicând tehnici precum structuri trie sau indexare eficientă pentru seturi de date mari.