นี่คือรายการวิกิพีเดีย
ถ้าคุณดูวิธีการทำซ้ำอย่างง่าย คุณเพียงแค่กำจัดองค์ประกอบครึ่งหนึ่งที่จะค้นหาจนกว่าคุณจะพบองค์ประกอบที่คุณต้องการ
นี่คือคำอธิบายวิธีที่เราคิดสูตร
พูดในตอนแรกว่าคุณมีองค์ประกอบจำนวน N แล้วสิ่งที่คุณทำคือ⌊N / 2⌋เป็นความพยายามครั้งแรก โดยที่ N คือผลรวมของขอบเขตล่างและขอบเขตบน ค่าครั้งแรกของ N จะเท่ากับ (L + H) โดยที่ L คือดัชนีแรก (0) และ H คือดัชนีสุดท้ายของรายการที่คุณกำลังค้นหา หากคุณโชคดีองค์ประกอบที่คุณพยายามค้นหาจะอยู่ตรงกลาง [เช่น คุณกำลังค้นหา 18 ในรายการ {16, 17, 18, 19, 20} จากนั้นคุณคำนวณ⌊ (0 + 4) / 2⌋ = 2 โดยที่ 0 คือขอบเขตที่ต่ำกว่า (L - ดัชนีขององค์ประกอบแรกของอาร์เรย์) และ 4 คือขอบเขตที่สูงขึ้น (H - ดัชนีขององค์ประกอบสุดท้ายของอาร์เรย์) ในกรณีข้างต้น L = 0 และ H = 4 ตอนนี้ 2 เป็นดัชนีขององค์ประกอบ 18 ที่คุณกำลังค้นหา บิงโก! คุณพบมัน
หากกรณีเป็นอาร์เรย์ที่แตกต่างกัน {15,16,17,18,19} แต่คุณยังคงค้นหา 18 คุณจะไม่โชคดีและคุณจะทำ N / 2 คนแรก (ซึ่งคือ⌊ (0 + 4) / 2⌋ = 2 จากนั้นให้ตระหนักถึงองค์ประกอบที่ 17 ที่ดัชนี 2 ไม่ใช่หมายเลขที่คุณต้องการตอนนี้คุณรู้แล้วว่าคุณไม่ต้องมองหาอาร์เรย์อย่างน้อยครึ่งหนึ่งในความพยายามครั้งถัดไปเพื่อค้นหาลักษณะวนซ้ำ ความพยายามในการค้นหาลดลงครึ่งหนึ่งดังนั้นโดยพื้นฐานแล้วคุณไม่ต้องค้นหารายการองค์ประกอบครึ่งหนึ่งที่คุณค้นหาก่อนหน้านี้ทุกครั้งที่คุณพยายามค้นหาองค์ประกอบที่คุณไม่สามารถค้นหาได้ในความพยายามครั้งก่อน
ดังนั้นกรณีที่เลวร้ายที่สุดก็คือ
[N] / 2 + [(N / 2)] / 2 + [((N / 2) / 2)] / 2 .....
เช่น:
N / 2 1 + N / 2 2 + N / 2 3 + ..... + N / 2 x … ..
จนกระทั่ง ... คุณค้นหาเสร็จแล้วโดยที่องค์ประกอบที่คุณพยายามค้นหาอยู่ท้ายรายการ
นั่นแสดงว่ากรณีที่เลวร้ายที่สุดคือเมื่อคุณไปถึง N / 2 x โดยที่ x เป็นเช่นนั้น 2 x = N
ในกรณีอื่น N / 2 x โดยที่ x เป็นเช่นนั้น 2 x <N ค่าต่ำสุดของ x สามารถเป็น 1 ซึ่งเป็นกรณีที่ดีที่สุด
ขณะนี้เนื่องจากกรณีที่แย่ที่สุดทางคณิตศาสตร์คือเมื่อค่า
2 x = N
=> log 2 (2 x ) = log 2 (N)
=> x * log 2 (2) = log 2 (N)
=> x * 1 = log 2 (N)
=> เพิ่มเติมอย่างเป็นทางการ⌊log 2 (N) + 1⌋