خوارزمية البحث الديناميكية (Dynamic Search) في C++- الشرح والمثال والكود

تُستخدم خوارزمية البحث الديناميكي، المعروفة أيضًا باسم خوارزمية "البحث أثناء الكتابة"، بشكل شائع لتنفيذ ميزات مثل الإكمال التلقائي في أشرطة البحث. توفر هذه الخوارزمية اقتراحات في الوقت الفعلي بناءً على مدخلات المستخدم والبيانات المتاحة.

كيف تعمل

  1. ابدأ بمجموعة بيانات تحتوي على قائمة بالعناصر(مثل الكلمات أو الأسماء أو المنتجات).
  2. أثناء قيام المستخدم بكتابة كل حرف، قم بتحديث استعلام البحث.
  3. قم بتصفية مجموعة البيانات بناءً على استعلام البحث الحالي.
  4. عرض النتائج التي تمت تصفيتها للمستخدم في الوقت الحقيقي.

مثال

خذ بعين الاعتبار مجموعة بيانات من لغات البرمجة: ["C"، "C++"، " Java "،" Python "،" JavaScript "،" Ruby "،" Swift "].

  1. أنواع المستخدمين "C". النتائج التي تمت تصفيتها: ["C"، "C++"].
  2. أنواع المستخدمين "C++". النتائج التي تمت تصفيتها: ["C++"].
  3. أنواع المستخدمين " Java ". النتائج التي تمت تصفيتها: [" Java "، " JavaScript "].
  4. أنواع المستخدمين "Py". النتائج التي تمت تصفيتها: [" Python "].
  5. أنواع المستخدمين "Jav". النتائج التي تمت تصفيتها: [" Java "، " JavaScript "].

رمز المثال في 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;  
}  

في هذا المثال، dynamicSearch تأخذ الدالة مجموعة بيانات من لغات البرمجة واستعلام المستخدم كمدخلات. تقوم بإرجاع اقتراحات بناءً على الاستعلام الحالي. عندما يقوم المستخدم بكتابة الأحرف، تقوم الخوارزمية بتصفية مجموعة البيانات وتعرض اقتراحات في الوقت الفعلي.

ملاحظة: يمكن أن يكون التنفيذ الفعلي للبحث الديناميكي أكثر تعقيدًا، حيث يتضمن تقنيات مثل الهياكل الثلاثية أو الفهرسة الفعالة لمجموعات البيانات الكبيرة.