Az önce okudum Bu algoritma hala bir İkili Arama algoritması olarak kabul edilebilir mi? ve birkaç yıl önce tarih / saat penceresine göre büyük düz metin dosyalarındaki günlük girdilerini bulmak için bir dizinleyici / günlük dosyaları aradığımı hatırladım.
Bunu yaparken enterpolasyon aramayı denemeye karar verdim (buna ne denildiğini bilmiyordum, bu fikre tek başıma rastladım). Sonra bir nedenle ikili enterpolasyon adımlarını ikili bölünmüş adımlarla değiştirme fikrine devam ettim: Adım 0'da test noktasına karar vermek için enterpolasyon yapacağım, sonra adım 1 tam orta noktayı alırdım vb.
Daha sonra sistemi saf enterpolasyon araması, saf ikili arama ve kombinasyon girişimimi kullanarak karşılaştırdım. Alternatif yaklaşım, rastgele seçilmiş bir dizi zaman bulmadan önce gereken zaman ve test sayısında açık bir kazanan oldu.
Bağlantılı sorudan esinlenerek, "alternatif enterpolasyon araması ve ikili arama" için hızlı bir arama yaptım ve hiçbir şey bulamadım. Ben de cevaplardan biri hakkındaki yorumumda önerildiği gibi "korunmuş enterpolasyon arama" denedim.
Bilinen bir şeyle karşılaştım mı? Belirli veri türleri için daha hızlı olmasının herhangi bir teorik gerekçesi var mı? Günlük dosyaları tipik olarak zaman için büyüktü (örneğin, aramak için belki 10 milyon satır içeren 1-2 GB metin) ve tarihlerin / saatlerin yayılması, yoğun aktivite patlamaları, genel pik süreleri ve sessiz sürelerle karmaşıktı. Kıyaslama testlerim, bulmak için hedef sürelerin eşit dağılımından örneklendi.