Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรม Python Binary Search แบบ Recursive


เมื่อต้องการทำ Binary Search ด้วย Recursion สามารถกำหนดเมธอดที่ตรวจสอบว่าดัชนี 'high' มากกว่า 'low' ตามค่าที่อยู่ในตัวแปร 'mid' ฟังก์ชันจะถูกเรียกซ้ำเพื่อค้นหาองค์ประกอบ

ลิสต์สามารถเก็บค่าที่หลากหลายได้

ตัวอย่าง

def binary_search(my_list, low, high, elem):
    if high >= low:
        mid = (high + low) // 2
        if my_list[mid] == elem:
            return mid
        elif my_list[mid] > elem:
            return binary_search(my_list, low, mid - 1, elem)
        else:
            return binary_search(my_list, mid + 1, high, elem)
    else:
        return -1

my_list = [1, 9, 11, 21, 34, 54, 67, 90]
elem_to_search = 1
print("The list is")
print(my_list)
my_result = binary_search(my_list, 0, len(my_list) - 1, elem_to_search)
if my_result != -1:
    print("Element found at index ", str(my_result))
else:
    print("Element not found!")

ผลลัพธ์

The list is [1, 9, 11, 21, 34, 54, 67, 90]
Element found at index 0

คำอธิบาย

  • กำหนดฟังก์ชัน 'binary_search'
  • รับลิสต์ ตัวแปร 'low', 'high' และองค์ประกอบที่ต้องการค้นหาเป็นพารามิเตอร์
  • กำหนดตัวแปร 'mid' เป็นค่าเฉลี่ยของ 'high' และ 'low'
  • หากองค์ประกอบที่ 'mid' เท่ากับที่ต้องการค้นหา ให้คืนค่า
  • มิฉะนั้น หากองค์ประกอบที่ 'mid' มากกว่า ให้เรียกฟังก์ชันซ้ำด้วยพารามิเตอร์ที่ต่างออกไป
  • มิฉะนั้น หากองค์ประกอบที่ 'mid' น้อยกว่า ให้เรียกฟังก์ชันซ้ำด้วยพารามิเตอร์ชุดอื่น
  • กำหนดลิสต์ และเรียกฟังก์ชันโดยส่งลิสต์นี้เป็นพารามิเตอร์
  • ข้อมูลจากการดำเนินการนี้ถูกเก็บในตัวแปร
  • ตัวแปรนี้คือเอาต์พุทที่แสดงบนคอนโซล