อัลกอริทึม Python

การค้นหาแบบทวิภาคใน Python

Binary search ลดขอบเขตค้นหาลงครึ่งหนึ่งทุกครั้งที่เปรียบเทียบ

การค้นหาแบบทวิภาคใน Python คืออะไร?

Binary search ลดขอบเขตค้นหาลงครึ่งหนึ่งทุกครั้งที่เปรียบเทียบ

ค้นหาค่าอย่างรวดเร็วใน list ที่เรียงแล้ว

ควรใช้เมื่อใด?

  • ทำความเข้าใจอัลกอริทึมและโครงสร้างข้อมูล
  • สังเกตแต่ละขั้นตอนและกรณีขอบ
  • เปรียบเทียบเวลาและหน่วยความจำ

ภาพจำลอง การค้นหาแบบทวิภาคใน Python

O(log n)

กด เล่น หรือ ทีละขั้น เพื่อดูการเปรียบเทียบและการย้ายข้อมูลแต่ละขั้น

โค้ดตัวอย่าง

รันโค้ด →
main.py
def binary_search(values, target):
    low, high = 0, len(values) - 1
    while low <= high:
        middle = (low + high) // 2
        if values[middle] == target:
            return middle
        if values[middle] < target:
            low = middle + 1
        else:
            high = middle - 1
    return -1

print(binary_search([3, 8, 12, 17, 25, 31], 17))

ผลลัพธ์ที่คาดหวัง

3

หลักการทำงาน

ค่ากลางกำหนดว่าจะเก็บครึ่งซ้ายหรือขวา ใช้เวลา O(log n) และ input ต้องเรียงแล้ว

เปลี่ยนค่าและรันโปรแกรมด้วย คอมไพเลอร์ Python ออนไลน์ของ CodeUtility โดยไม่ต้องติดตั้ง Python

แบบฝึกหัด

ลองเปลี่ยน input และทดสอบกรณีขอบก่อนใช้ชุดข้อมูลที่ใหญ่ขึ้น

  1. ทดสอบ input ว่าง หนึ่งสมาชิก และค่าซ้ำ
  2. แสดงสถานะหลังแต่ละขั้นตอน
  3. เปรียบเทียบประสิทธิภาพกับวิธีอื่น
รันใน Python IDE →