Algoritmo de búsqueda dinámica (Dynamic Search) en C++: explicación, ejemplo y código

El algoritmo de búsqueda dinámica, también conocido como el algoritmo de "búsqueda mientras escribe", se usa comúnmente para implementar funciones como la función de autocompletar en las barras de búsqueda. Este algoritmo proporciona sugerencias en tiempo real basadas en la entrada del usuario y los datos disponibles.

Cómo funciona

  1. Comience con un conjunto de datos que contenga una lista de elementos(por ejemplo, palabras, nombres o productos).
  2. A medida que el usuario escribe cada carácter, actualice la consulta de búsqueda.
  3. Filtre el conjunto de datos según la consulta de búsqueda actual.
  4. Muestra los resultados filtrados al usuario en tiempo real.

Ejemplo

Considere un conjunto de datos de lenguajes de programación: ["C", "C++", " Java ", " Python ", " JavaScript ", " Ruby ", " Swift "].

  1. El usuario escribe "C". Resultados filtrados: ["C", "C++"].
  2. El usuario escribe "C++". Resultados filtrados: ["C++"].
  3. El usuario escribe " Java ". Resultados filtrados: [" Java ", " JavaScript "].
  4. El usuario escribe "Py". Resultados filtrados: [" Python "].
  5. El usuario escribe "Jav". Resultados filtrados: [" Java ", " JavaScript "].

Código de ejemplo en 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;  
}  

En este ejemplo, la dynamicSearch función toma un conjunto de datos de lenguajes de programación y una consulta de usuario como entradas. Devuelve sugerencias basadas en la consulta actual. A medida que el usuario escribe caracteres, el algoritmo filtra el conjunto de datos y muestra sugerencias en tiempo real.

Nota: La implementación real de la búsqueda dinámica puede ser más compleja e involucra técnicas como estructuras trie o indexación eficiente para grandes conjuntos de datos.