使用迴圈和遞迴方法實現二分法搜尋

2021-07-14 21:27:55 字數 1084 閱讀 5938

對於已排序的序列,實現二分法搜尋演算法,有迴圈和遞迴兩種策略。

對於這種演算法,中心點一直是乙個開區間,因此下一次搜尋時新區間應該相應的+-1,從而最終start>end

# -*- coding: utf-8 -*-

def binarysearch1(l, item):

start = 0

end = len(l) - 1

while start <= end:

mid = (start + end)/2

if l[mid] < item:

start = mid + 1

elif l[mid] > item:

end = mid -1

else:

return mid

return -1

def binarysearch_recur1(l, item):

start = 0

end = len(l) - 1

def binarysearch_recur_pack(l, item, start, end):

if start <= end:

mid = (start + end)/2

if l[mid] < item:

start = mid + 1

elif l[mid] > item:

end = mid - 1

else:

return mid

result = binarysearch_recur_pack(l, item, start, end)

if result == -1:

return -1

else:

return result

else:

return -1

return binarysearch_recur_pack(l, item, start, end)

l = [1, 6, 8, 9, 14, 36, 77, 90]

print binarysearch1(l, 5)

print binarysearch_recur1(l, 78)

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python 二分法查詢(遞迴實現和迴圈實現)

二分法 查詢的場景可以想象做一群小孩上體育課的時候按高矮個排隊,按個子從矮到高順序排好了之後,小孩a姍姍來遲,這時候老師就說,來,報個數,你們班排在中間的同學m舉下手 然後小孩a和小孩m比身高,要是小孩a比m高,那小孩a的位置上肯定要安排在m之後,否則就安排在m之前。就這樣縮小範圍後,在重複上面的操...

遞迴二分法查詢

二分法使用了折半查詢的思想,不斷的變化,陣列下標的起始位置 begin 和終止位置 end 來進行搜尋。我們使用兩種演算法,解決二分查詢 public class solution system.out.println solution.sort number,0,number.length,56 ...