Dynamiczny (Dynamic Search) algorytm wyszukiwania w C++- wyjaśnienie, przykład i kod

Algorytm wyszukiwania dynamicznego, znany również jako algorytm wyszukiwania w miarę wpisywania, jest powszechnie używany do implementowania funkcji, takich jak autouzupełnianie w paskach wyszukiwania. Algorytm ten zapewnia sugestie w czasie rzeczywistym na podstawie danych wprowadzonych przez użytkownika i dostępnych danych.

Jak to działa

  1. Zacznij od zestawu danych zawierającego listę elementów(np. słowa, nazwy lub produkty).
  2. Gdy użytkownik wpisze każdy znak, zaktualizuj zapytanie wyszukiwania.
  3. Filtruj zestaw danych na podstawie bieżącego zapytania wyszukiwania.
  4. Wyświetlaj przefiltrowane wyniki użytkownikowi w czasie rzeczywistym.

Przykład

Rozważ zbiór danych języków programowania: ["C", "C++", " Java ", " Python ", " JavaScript ", " Ruby ", " Swift "].

  1. Typy użytkowników „C”. Filtrowane wyniki: ["C", "C++"].
  2. Typ użytkownika „C++”. Filtrowane wyniki: ["C++"].
  3. Typy użytkowników „ Java ”. Filtrowane wyniki: [" Java ", " JavaScript "].
  4. Typy użytkowników „Py”. Filtrowane wyniki: [" Python "].
  5. Typy użytkowników „Jav”. Filtrowane wyniki: [" Java ", " JavaScript "].

Przykładowy kod w 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;  
}  

W tym przykładzie dynamicSearch funkcja pobiera zestaw danych języków programowania i zapytanie użytkownika jako dane wejściowe. Zwraca sugestie na podstawie bieżącego zapytania. Gdy użytkownik wpisuje znaki, algorytm filtruje zestaw danych i wyświetla sugestie w czasie rzeczywistym.

Uwaga: Rzeczywista implementacja wyszukiwania dynamicznego może być bardziej złożona i obejmować techniki, takie jak struktury trie lub efektywne indeksowanie dużych zestawów danych.