Um eine Interpolationssuche durchzuführen, benötigen Sie natürlich einen Schlüsseltyp, für den mehr als die Reihenfolge bekannt ist. Sie müssen in der Lage sein, Berechnungen mit den Schlüsseln durchzuführen, um eine wahrscheinliche Entfernung abzuschätzen, und nicht nur Schlüssel zu vergleichen, um festzustellen, welche größer oder größer sind geringer.
Was die Eigenschaften des Datensatzes anbelangt, handelt es sich meistens um eine Eigenschaft: eine Wahrscheinlichkeit, dass die Schlüssel über den Bereich der Möglichkeiten hinweg einigermaßen gleichmäßig (oder zumindest vorhersehbar) verteilt sind. Ohne das kann eine Interpolationssuche tatsächlich langsamer sein als eine binäre Suche.
Betrachten Sie beispielsweise einen Datensatz mit Zeichenfolgen aus Kleinbuchstaben als Schlüssel. Angenommen, Sie haben einen Schlüssel, der mit "x" beginnt. Eine Interpolationssuche zeigt deutlich an, dass Sie kurz vor dem Ende des Satzes mit der Suche beginnen sollten. Wenn jedoch die meisten Ihrer Tasten tatsächlich mit 'z' beginnen und fast keine mit 'a' bis 'y', befindet sich die gesuchte Taste möglicherweise sehr nahe am Anfang des Sets. Es kann / kann eine beträchtliche Anzahl von Iterationen dauern, bis sich die Suche dem Anfang nähert, an dem sich die mit 'w' beginnende Zeichenfolge befindet. Jede Iteration würde nur ~ 10% des Datensatzes aus der Betrachtung entfernen, so dass es mehrere Iterationen dauern würde, bis der Anfang erreicht ist, an dem die Schlüssel mit 'w' beginnen.
Im Gegensatz dazu würde eine binäre Suche startet in der Mitte, erhält auf die ein Viertel Zeichen bei der zweiten Iteration, ein Achtel Markierung auf dem dritten und so weiter. Die Leistung würde durch die Neigung der Tasten kaum beeinträchtigt. Bei jeder Iteration wird die Hälfte des Datensatzes aus der Prüfung entfernt, als ob die Schlüssel gleichmäßig verteilt wären.
Ich beeile mich jedoch hinzuzufügen, dass es wirklich eine ziemlich verzerrte Verteilung erfordert, um eine Interpolationssuche merklich schlechter als eine binäre Suche zu machen. Es kann zum Beispiel auch bei relativ vielen lokalisierten Clustern eine recht gute Leistung erbringen.
Ich sollte auch erwähnen, dass eine Interpolationssuche nicht unbedingt eine lineare Interpolation verwenden muss. Wenn beispielsweise bekannt ist, dass Ihre Tasten einer nichtlinearen Verteilung folgen (z. B. einer Glockenkurve), kann dies in der Interpolationsfunktion relativ einfach berücksichtigt werden, um Ergebnisse zu erhalten, die sich kaum von einer gleichmäßigen Verteilung unterscheiden.