การค้นหาแบบไบนารี ค้นหาเป้าหมายในอาร์เรย์ที่เรียงลำดับแล้วโดยการแบ่งช่วงการค้นหาครึ่งหนึ่งซ้ำ ๆ การเปรียบเทียบแต่ละครั้งจะกำจัดองค์ประกอบที่เหลือครึ่งหนึ่ง ให้เวลา O(log n)
ความคิด
ดูองค์ประกอบตรงกลาง หากเท่ากับเป้าหมายแล้วเสร็จ หากเป้าหมายเล็กกว่า ให้ค้นหาครึ่งซ้าย หากใหญ่กว่า ให้ค้นหาครึ่งขวา ทำซ้ำจนกว่าจะพบหรือช่วงว่างเปล่า
ตัวอย่าง
():
lo, hi = , (arr) -
lo <= hi:
mid = (lo + hi) //
arr[mid] == target:
mid
arr[mid] < target:
lo = mid +
:
hi = mid -
-
binary_search([, , , , ], )
