Очевидно, що для здійснення інтерполяційного пошуку вам потрібен певний тип ключа, для якого відомо більше, ніж замовлення - ви повинні вміти робити обчислення на ключах, щоб оцінити ймовірну відстань, а не просто порівнювати ключі, щоб визначити, яка більша або менший.
Що стосується властивостей набору даних, то це здебільшого стосується однієї властивості: ймовірність того, що ключі досить рівномірно (або принаймні передбачувано) розподіляються у межах усіх можливостей. Без цього пошук інтерполяції насправді може бути повільнішим, ніж двійковий пошук.
Наприклад, розгляньте набір даних із рядками малих літер як ключі. Припустимо, у вас є ключ, який починається з "х". Інтерполяційний пошук чітко вказує на те, що слід починати пошук дуже близько до кінця набору. Якщо, однак, більшість ваших ключів насправді починається з 'z', і майже жодна не має нічого з 'a', хоча 'y', той, який ви шукаєте, насправді може бути дуже близьким до початку набору. Це може / може зайняти значну кількість ітерацій, перш ніж пошук наблизиться до початку, де розташовується рядок, що починається з 'w'. Кожна ітерація видалила б з уваги лише ~ 10% набору даних, тому знадобиться кілька ітерацій, перш ніж вона наблизиться до початку, де ключі починаються з 'w'
Навпаки, двійковий пошук розпочався б із середини, дістався до позначки на одну чверть при другій ітерації, до однієї восьмої позначки на третій тощо. На його виконання майже не вплине перекос у клавішах. Кожна ітерація видалила б із розгляду половину набору даних так само, як якщо б ключі були розподілені рівномірно.
Поспішаю додати, однак, що насправді потрібен досить перекошений розподіл, щоб зробити інтерполяційний пошук помітно гіршим, ніж двійковий пошук. Наприклад, вона може працювати досить добре навіть за наявності достатньої кількості локалізованої кластеризації.
Я також повинен зазначити, що для інтерполяційного пошуку не обов'язково потрібно використовувати лінійну інтерполяцію. Наприклад, якщо відомо, що ваші клавіші виконують деякий нелінійний розподіл (наприклад, крива дзвіночка), це враховує досить легко, враховуючи функцію інтерполяції, щоб отримати результати, які мало відрізняються від рівномірного розподілу.