Rõ ràng, để thực hiện tìm kiếm nội suy, bạn cần một số loại khóa được biết nhiều hơn thứ tự - bạn phải có thể tính toán trên các khóa để ước tính khoảng cách có thể, không chỉ so sánh các khóa để xác định khóa nào lớn hơn hoặc ít hơn
Theo như các thuộc tính của bộ dữ liệu, nó chủ yếu thuộc về một thuộc tính: khả năng các khóa được phân bổ hợp lý (hoặc ít nhất là có thể dự đoán) được phân bổ trong phạm vi khả năng. Không có điều đó, một tìm kiếm nội suy thực sự có thể chậm hơn tìm kiếm nhị phân.
Ví dụ, hãy xem xét một tập dữ liệu với các chuỗi chữ cái viết thường làm khóa. Giả sử bạn có một khóa bắt đầu bằng "x". Một tìm kiếm nội suy sẽ chỉ rõ rằng bạn nên bắt đầu tìm kiếm rất gần với phần cuối của tập hợp. Tuy nhiên, nếu hầu hết các khóa của bạn thực sự bắt đầu bằng 'z' và hầu như không có bất kỳ thứ gì từ 'a' mặc dù 'y', thì khóa bạn đang tìm kiếm có thể thực sự rất gần với phần đầu của tập hợp. Nó có thể / có thể mất một số lần lặp đáng kể trước khi tìm kiếm gần với điểm bắt đầu mà chuỗi bắt đầu bằng 'w' cư trú. Mỗi lần lặp sẽ chỉ loại bỏ ~ 10% bộ dữ liệu khỏi xem xét, do đó, sẽ mất vài lần lặp trước khi nó gần với điểm bắt đầu trong đó các khóa bắt đầu bằng 'w'
Ngược lại, một tìm kiếm nhị phân sẽ bắt đầu ở giữa, đến điểm một phần tư ở lần lặp thứ hai, một phần tám trên phần ba, v.v. Hiệu suất của nó sẽ gần như không bị ảnh hưởng bởi độ lệch trong các phím. Mỗi lần lặp sẽ loại bỏ một nửa tập dữ liệu khỏi xem xét, giống như các khóa được phân bổ đều.
Tôi đẩy nhanh thêm, tuy nhiên, nó thực sự không mất khá một bản phân phối lệch phải thực hiện một suy tìm kiếm đáng tồi tệ hơn một tìm kiếm nhị phân. Nó có thể, ví dụ, hoạt động khá tốt ngay cả khi có sự phân cụm cục bộ.
Tôi cũng nên đề cập rằng tìm kiếm nội suy không nhất thiết phải sử dụng phép nội suy tuyến tính. Ví dụ: nếu các khóa của bạn được biết là tuân theo một số phân phối phi tuyến tính (ví dụ: đường cong hình chuông), việc xem xét điều đó trong hàm nội suy để có kết quả khác với việc phân phối đồng đều trở nên khá dễ dàng.