Jelas, untuk melakukan pencarian interpolasi, Anda memerlukan beberapa jenis kunci yang diketahui lebih dari pemesanan - Anda harus dapat melakukan perhitungan pada tombol untuk memperkirakan jarak yang mungkin, tidak hanya membandingkan kunci untuk menentukan mana yang lebih besar atau lebih rendah.
Sejauh properti dari dataset pergi, itu sebagian besar datang ke satu properti: kemungkinan bahwa tombol yang cukup merata (atau setidaknya diduga) didistribusikan ke seluruh berbagai kemungkinan. Tanpa itu, pencarian interpolasi sebenarnya bisa lebih lambat dari pencarian biner.
Misalnya, pertimbangkan kumpulan data dengan string huruf kecil sebagai kunci. Anggap Anda memiliki kunci yang dimulai dengan "x". Pencarian interpolasi jelas akan menunjukkan bahwa Anda harus mulai mencari sangat dekat dengan akhir set. Namun, jika sebagian besar kunci Anda benar-benar dimulai dengan 'z', dan hampir tidak ada dengan apa pun dari 'a' meskipun 'y', yang Anda cari sebenarnya sangat dekat dengan awal set. Itu bisa / dapat mengambil sejumlah besar iterasi sebelum pencarian mendekati awal di mana string dimulai dengan 'w' berada. Setiap iterasi akan menghapus hanya ~ 10% dari set data dari pertimbangan, sehingga akan membutuhkan beberapa iterasi sebelum mendekati awal di mana kunci dimulai dengan 'w'
Sebaliknya, pencarian biner akan dimulai di tengah, sampai ke tanda seperempat di iterasi kedua, tanda seperdelapan pada yang ketiga, dan seterusnya. Kinerjanya akan hampir tidak terpengaruh oleh kemiringan tombol. Setiap iterasi akan menghapus setengah dari set data dari pertimbangan, sama seperti kunci didistribusikan secara merata.
Saya cepat-cepat menambahkan, bahwa memang dibutuhkan distribusi yang agak miring untuk membuat pencarian interpolasi terasa lebih buruk daripada pencarian biner. Sebagai contoh, ia dapat berkinerja cukup baik bahkan di hadapan sejumlah besar pengelompokan yang dilokalkan.
Saya juga harus menyebutkan bahwa pencarian interpolasi tidak perlu menggunakan interpolasi linier. Sebagai contoh, jika kunci Anda diketahui mengikuti beberapa distribusi non-linear (misalnya, kurva-lonceng), menjadi cukup mudah untuk memperhitungkannya dalam fungsi interpolasi untuk mendapatkan hasil yang sedikit berbeda dari memiliki distribusi yang merata.