寫程式的思路:
1.如果要查詢的值等於中位數 target=mid,就查詢成功,返回true
2.如果要查詢的值小於中位數 targetmid,就在中位數的右邊 alist[mid + 1:] 進行查詢
**如下:
舉例執行:def binary_search_2(alist, target):
"""二分查詢 遞迴方式"""
n = len(alist)
if n == 0:
return false
mid = n // 2 # " // " 表示整數除法,返回不大於結果的乙個最大的整數
if alist[mid] == target:
return true
elif target < alist[mid]:
return binary_search_2(alist[:mid], target)
else:
return binary_search_2(alist[mid + 1:], target)
def main():
'''主函式
'''#輸入數列時不要用空格隔開,只能是輸入123569,否則輸出的都是false
alist_str = input('請輸入排序好的數列:') # 二分查詢的數列是已經排序好了的
alist = list(alist_str)
target = input('請輸入要查詢的值:')
print(binary_search_2(alist, target))
if __name__ == '__main__': # 呼叫主函式
main()
其實去掉主函式框架也是可以的:
def binary_search_2(alist, target):
"""二分查詢 遞迴方式"""
n = len(alist)
if n == 0:
return false
mid = n // 2 # " // " 表示整數除法,返回不大於結果的乙個最大的整數
if alist[mid] == target:
return true
elif target < alist[mid]:
return binary_search_2(alist[:mid], target)
else:
return binary_search_2(alist[mid + 1:], target)
#輸入數列時不要用空格隔開,只能是輸入123569,否則輸出的都是false
alist_str = input('請輸入排序好的數列:') # 二分查詢的數列是已經排序好了的
alist = list(alist_str)
target = input('請輸入要查詢的值:')
print(binary_search_2(alist, target))
二分查詢(遞迴實現)
include include intk int binarysearch int a,int x,int low,int high a表示需要二分的有序陣列 公升序 x表示需要查詢的數字,low,high表示高低位 int mid low high 2 if x a mid 找到x else if...
遞迴實現二分查詢
回文是一種字串,它正著讀和反著讀都是一樣的。比如level,eye都是回文。用迭代的方法可以很快地判斷乙個字串是否為回文。用遞迴的方法如何來實現呢?首先我們要考慮使用遞迴的兩個條件 include iostream include include string define max 100 usin...
二分查詢的遞迴實現
二分查詢又叫做折半查詢,具體的查詢流程如下 查詢的前提是待查詢序列是公升序的。1 演算法流程 a.使用目標元素與樣本數列 公升序 中的中間元素比較大小,若相等則表示查詢成功 b.若目標元素小於中間元素,則應該去中間元素的左邊進行查詢 c.若目標元素大於中間元素,則應該去中間元素的右邊進行查詢 d.重...