"Yazdıkça ara" algoritması olarak da bilinen dinamik arama algoritması, arama çubuklarında otomatik tamamlama gibi özellikleri uygulamak için yaygın olarak kullanılır. Bu algoritma, kullanıcının girişine ve mevcut verilere dayalı olarak gerçek zamanlı öneriler sağlar.
Nasıl çalışır
- Bir öğe listesi(örneğin, sözcükler, adlar veya ürünler) içeren bir veri kümesiyle başlayın.
- Kullanıcı her karakteri yazarken, arama sorgusunu güncelleyin.
- Geçerli arama sorgusuna göre veri kümesini filtreleyin.
- Filtrelenmiş sonuçları kullanıcıya gerçek zamanlı olarak görüntüleyin.
Örnek
Bir programlama dilleri veri kümesi düşünün: ["C", "C++", " Java ", " Python ", " JavaScript ", " Ruby ", " Swift "].
- Kullanıcı türleri "C". Filtrelenen sonuçlar: ["C", "C++"].
- Kullanıcı türleri "C++". Filtrelenen sonuçlar: ["C++"].
- Kullanıcı türleri " Java ". Filtrelenen sonuçlar: [" Java ", " JavaScript "].
- Kullanıcı türleri "Py". Filtrelenen sonuçlar: [" Python "].
- Kullanıcı türleri "Jav". Filtrelenen sonuçlar: [" Java ", " JavaScript "].
C++'da Örnek Kod
#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;
}
Bu örnekte dynamicSearch
işlev, programlama dillerinin bir veri kümesini ve bir kullanıcı sorgusunu girdi olarak alır. Mevcut sorguya göre öneriler döndürür. Kullanıcı karakterleri yazarken, algoritma veri kümesini filtreler ve gerçek zamanlı önerileri görüntüler.
Not: Dinamik aramanın gerçek uygulaması, trie yapıları veya büyük veri kümeleri için verimli indeksleme gibi teknikleri içerecek şekilde daha karmaşık olabilir.