二分查詢的 Python 程式


在本文中,我們將學習解決給定問題陳述的解決方案和方法。

問題陳述 − 我們將獲得一個排序好的列表,我們需要藉助二分查詢查詢其中一個元素。

演算法

  • 將 x 與中間元素進行比較。

  • 如果 x 與中間元素匹配,我們就返回中間索引。

  • 否則,如果 x 大於中間元素,則 x 只可能位於中間元素之後的右半子陣列中。因此,我們對右半部分進行遞迴。

  • 否則(x 較小),我們對左半部分進行遞迴

遞迴演算法

示例

def binarySearchAppr (arr, start, end, x):
# check condition
if end >= start:
   mid = start + (end- start)//2
   # If element is present at the middle
   if arr[mid] == x:
      return mid
   # If element is smaller than mid
   elif arr[mid] > x:
      return binarySearchAppr(arr, start, mid-1, x)
   # Else the element greator than mid
   else:
      return binarySearchAppr(arr, mid+1, end, x)
   else:
   # Element is not found in the array
      return -1
arr = sorted(['t','u','t','o','r','i','a','l'])
x ='r'
result = binarySearchAppr(arr, 0, len(arr)-1, x)
if result != -1:
   print ("Element is present at index "+str(result))
else:
print ("Element is not present in array")

迭代演算法

示例

即時演示

def binarySearchAppr (arr, start, end, x):
# check condition
   if end >= start:
      mid = start + (end- start)//2
      # If element is present at the middle
      if arr[mid] == x:
      return mid
      # If element is smaller than mid
      elif arr[mid] > x:
      return binarySearchAppr(arr, start, mid-1, x)
      # Else the element greator than mid
      else:
      return binarySearchAppr(arr, mid+1, end, x)
   else:
      # Element is not found in the array
      return -1
arr = sorted(['t','u','t','o','r','i','a','l'])
   x ='r'
   result = binarySearchAppr(arr, 0, len(arr)-1, x)
if result != -1:
   print ("Element is present at index "+str(result))
else:
   print ("Element is not present in array")
Element is present at index 4

結論

在本文中,我們學習了應用二分查詢的方法。

更新時間: 2019 年 9 月 25 日

6 千多次瀏覽

開啟你的 事業

完成課程獲得認證

開始學習
廣告
© . All rights reserved.