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

โปรแกรม Python เพื่อใช้งานการค้นหาแบบไบนารีด้วยการเรียกซ้ำ


เมื่อจำเป็นต้องใช้การค้นหาแบบไบนารีโดยใช้การเรียกซ้ำ สามารถกำหนดวิธีการได้ ซึ่งจะตรวจสอบว่าดัชนี 'สูง' มากกว่าดัชนี 'ต่ำ' หรือไม่ ตามค่าที่มีอยู่ที่ตัวแปร 'กลาง' ฟังก์ชันจะถูกเรียกอีกครั้งเพื่อค้นหาองค์ประกอบ

สามารถใช้รายการเพื่อเก็บค่าที่แตกต่างกัน (เช่น ข้อมูลของประเภทข้อมูลใดๆ เช่น จำนวนเต็ม จุดลอยตัว สตริง และอื่นๆ)

ด้านล่างนี้เป็นการสาธิตสำหรับสิ่งเดียวกัน -

ตัวอย่าง

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