Oczywiście, aby przeprowadzić wyszukiwanie interpolacji, potrzebujesz jakiegoś klucza, dla którego znane jest więcej niż zamawianie - musisz być w stanie wykonać obliczenia na kluczach, aby oszacować prawdopodobną odległość, a nie tylko porównywać klucze, aby określić, który jest większy lub pomniejszy.
Jeśli chodzi o właściwości zestawu danych, dotyczy to głównie jednej właściwości: prawdopodobieństwo, że klucze są racjonalnie równomiernie (lub przynajmniej przewidywalnie) rozmieszczone w całym zakresie możliwości. Bez tego wyszukiwanie interpolacji może być wolniejsze niż wyszukiwanie binarne.
Weźmy na przykład zestaw danych z ciągami małych liter jako kluczami. Załóżmy, że masz klucz zaczynający się od „x”. Wyszukiwanie interpolacyjne wyraźnie wskazuje, że należy rozpocząć wyszukiwanie bardzo blisko końca zestawu. Jeśli jednak większość twoich klawiszy zaczyna się od „z”, a prawie żadna z niczego od „a” choć „y”, ten, którego szukasz, może być bardzo blisko początku zestawu. Może / może zająć znaczną liczbę iteracji, zanim wyszukiwanie zbliży się do początku, w którym znajduje się ciąg zaczynający się od „w”. Każda iteracja usunąłaby z analizy tylko ~ 10% zbioru danych, więc zajęłoby kilka iteracji, zanim zbliżyłaby się do początku, w którym klucze zaczynające się na „w”
Natomiast wyszukiwanie binarne rozpoczyna się na środku, do drugiej ćwiartki, drugiej ósmej i tak dalej. Na jego działanie prawie nie miałoby wpływu pochylenie klawiszy. Każda iteracja usuwa połowę zestawu danych z rozważań, tak jakby klucze były równomiernie rozłożone.
Pośpieszę jednak dodać, że tak naprawdę potrzeba dość wypaczonej dystrybucji, aby wyszukiwanie interpolacji było zauważalnie gorsze niż wyszukiwanie binarne. Może na przykład działać całkiem dobrze, nawet przy dużej liczbie zlokalizowanych klastrów.
Powinienem również wspomnieć, że wyszukiwanie interpolacji nie musi koniecznie używać interpolacji liniowej. Na przykład, jeśli wiadomo, że twoje klucze podążają za pewnym rozkładem nieliniowym (np. Krzywą dzwonową), dość łatwo jest wziąć to pod uwagę w funkcji interpolacji, aby uzyskać wyniki niewiele różniące się od równomiernego rozkładu.