เห็นได้ชัดว่าในการทำการค้นหาการแก้ไขคุณต้องใช้คีย์บางประเภทที่ทราบมากกว่าการสั่งซื้อคุณต้องทำการคำนวณบนคีย์เพื่อประมาณระยะทางที่น่าจะเป็นไม่ใช่แค่เปรียบเทียบคีย์เพื่อพิจารณาว่าอันไหนดีกว่าหรือ น้อยกว่า
เท่าที่คุณสมบัติของชุดข้อมูลการเดินทางส่วนใหญ่มาถึงหนึ่งในคุณสมบัติ: ความน่าจะเป็นว่าคีย์จะมีเหตุผลอย่างเท่าเทียมกัน (หรืออย่างน้อยไม่คาดฝัน) กระจายไปทั่วในช่วงของความเป็นไปได้ หากไม่มีสิ่งนั้นการค้นหาแบบสอดแทรกอาจช้ากว่าการค้นหาแบบไบนารี
ตัวอย่างเช่นพิจารณาชุดข้อมูลที่มีสตริงตัวอักษรตัวพิมพ์เล็กเป็นคีย์ สมมติว่าคุณมีคีย์ที่ขึ้นต้นด้วย "x" การค้นหาแบบสอดแทรกจะระบุอย่างชัดเจนว่าคุณควรเริ่มค้นหาใกล้กับส่วนท้ายของชุด อย่างไรก็ตามหากคีย์ส่วนใหญ่ของคุณเริ่มต้นด้วย 'z' และเกือบจะไม่มีสิ่งใดจาก 'a' ถึง 'y' สิ่งที่คุณกำลังค้นหาอาจใกล้เคียงกับจุดเริ่มต้นของชุดแทน สามารถ / อาจใช้การวนซ้ำจำนวนมากก่อนที่การค้นหาจะเข้าใกล้จุดเริ่มต้นที่สตริงเริ่มต้นด้วย 'w' การวนซ้ำแต่ละครั้งจะลบเพียง 10% ของชุดข้อมูลออกจากการพิจารณาดังนั้นจึงต้องใช้การวนซ้ำหลายครั้งก่อนที่จะเข้าใกล้จุดเริ่มต้นโดยที่ปุ่มเริ่มต้นด้วย 'w'
ในทางตรงกันข้ามการค้นหาแบบไบนารี่จะเริ่มต้นที่กึ่งกลางไปที่เครื่องหมายหนึ่งในสี่ที่การวนซ้ำครั้งที่สองเครื่องหมายหนึ่งในแปดในสามและต่อไปเรื่อย ๆ ประสิทธิภาพการทำงานจะแทบไม่ได้รับผลกระทบจากความเบ้ในปุ่ม การทำซ้ำแต่ละครั้งจะลบชุดข้อมูลครึ่งหนึ่งออกจากการพิจารณาราวกับว่ามีการแจกจ่ายกุญแจอย่างเท่าเทียมกัน
ฉันเร่งที่จะเพิ่ม แต่จริงๆแล้วมันมีการกระจายค่อนข้างเบ้เพื่อทำการค้นหาการแก้ไขที่แย่กว่าการค้นหาแบบไบนารีอย่างเห็นได้ชัด ยกตัวอย่างเช่นสามารถทำงานได้ค่อนข้างดีแม้จะมีการจัดกลุ่มที่มีการแปลเป็นภาษาท้องถิ่นอยู่พอสมควร
ฉันควรพูดถึงด้วยว่าการค้นหาการแก้ไขไม่จำเป็นต้องใช้การประมาณเชิงเส้น ตัวอย่างเช่นหากทราบว่ากุญแจของคุณเป็นไปตามการแจกแจงแบบไม่เชิงเส้น (เช่นเส้นโค้งเบลล์) มันจะค่อนข้างง่ายที่จะนำมาพิจารณาในฟังก์ชั่นการแก้ไขเพื่อให้ได้ผลลัพธ์ที่แตกต่างกันเล็กน้อย