Algoritmo de Pesquisa Dinâmica (Dynamic Search) em C++- Explicação, Exemplo e Código

O algoritmo de pesquisa dinâmica, também conhecido como algoritmo "pesquisar conforme você digita", é comumente usado para implementar recursos como preenchimento automático em barras de pesquisa. Esse algoritmo fornece sugestões em tempo real com base na entrada do usuário e nos dados disponíveis.

Como funciona

  1. Comece com um conjunto de dados contendo uma lista de itens(por exemplo, palavras, nomes ou produtos).
  2. À medida que o usuário digita cada caractere, atualize a consulta de pesquisa.
  3. Filtre o conjunto de dados com base na consulta de pesquisa atual.
  4. Exiba os resultados filtrados para o usuário em tempo real.

Exemplo

Considere um conjunto de dados de linguagens de programação: ["C", "C++", " Java ", " Python ", " JavaScript ", " Ruby ", " Swift "].

  1. Tipos de usuário "C". Resultados filtrados: ["C", "C++"].
  2. Tipos de usuário "C++". Resultados filtrados: ["C++"].
  3. Tipos de usuário " Java ". Resultados filtrados: [" Java ", " JavaScript "].
  4. O usuário digita "Py". Resultados filtrados: [" Python "].
  5. O usuário digita "Jav". Resultados filtrados: [" Java ", " JavaScript "].

Exemplo de código em 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;  
}  

Neste exemplo, a dynamicSearch função usa um conjunto de dados de linguagens de programação e uma consulta do usuário como entrada. Ele retorna sugestões com base na consulta atual. À medida que o usuário digita os caracteres, o algoritmo filtra o conjunto de dados e exibe sugestões em tempo real.

Observação: a implementação real da pesquisa dinâmica pode ser mais complexa, envolvendo técnicas como estruturas trie ou indexação eficiente para grandes conjuntos de dados.