Obviamente, para realizar una búsqueda de interpolación, necesita algún tipo de clave para la que se conoce más que el orden: debe ser capaz de hacer cálculos en las teclas para estimar una distancia probable, no solo comparar teclas para determinar cuál es mayor o mayor. menor.
En cuanto a las propiedades del conjunto de datos, se trata principalmente de una propiedad: la probabilidad de que las claves se distribuyan de manera razonablemente uniforme (o al menos predecible) en todo el rango de posibilidades. Sin eso, una búsqueda de interpolación puede ser más lenta que una búsqueda binaria.
Por ejemplo, considere un conjunto de datos con cadenas de letras minúsculas como claves. Supongamos que tiene una clave que comienza con "x". Una búsqueda de interpolación indicará claramente que debe comenzar a buscar muy cerca del final del conjunto. Sin embargo, si la mayoría de sus claves realmente comienzan con 'z', y casi ninguna con algo de 'a' aunque 'y', la que está buscando puede estar muy cerca del comienzo del conjunto. Puede / puede tomar un número considerable de iteraciones antes de que la búsqueda se acerque al comienzo donde reside la cadena que comienza con 'w'. Cada iteración eliminaría solo ~ 10% del conjunto de datos de la consideración, por lo que tomaría varias iteraciones antes de acercarse al principio donde las teclas que comienzan con 'w'
Por el contrario, una búsqueda binaria comenzaría en el medio, llegaría a la marca de un cuarto en la segunda iteración, a la octava marca en la tercera, y así sucesivamente. Su rendimiento casi no se vería afectado por el sesgo en las teclas. Cada iteración eliminaría la mitad del conjunto de datos de la consideración, como si las claves estuvieran distribuidas de manera uniforme.
Sin embargo, me apresuro a agregar que realmente se necesita una distribución bastante sesgada para que una búsqueda de interpolación sea notablemente peor que una búsqueda binaria. Por ejemplo, puede funcionar bastante bien incluso en presencia de una buena cantidad de agrupación localizada.
También debo mencionar que una búsqueda de interpolación no necesariamente necesita usar interpolación lineal. Por ejemplo, si se sabe que sus claves siguen una distribución no lineal (por ejemplo, una curva de campana), se hace bastante fácil tener eso en cuenta en la función de interpolación para obtener resultados poco diferentes de tener una distribución uniforme.