- 论坛徽章:
- 13
|
- #binary search recursive
- def binary_search_rec(seq,key,low=0,high=None):
- low=0
- high=len(seq)-1
- mid=(high+low)//2
- if not seq or low > high:
- return False
- if seq[mid]==key:
- return mid
- if key < seq[mid]:
- return binary_search_rec(seq,key,low,mid)
- else:
- return binary_search_rec(seq,key,mid,high)
- #binary search iterative
- def binary_search_iter(seq,key):
- hi,lo=len(seq)-1,0
- while lo < hi:
- mid=(hi+lo)//2
- if key==seq[mid]:
- return mid
- elif key < seq[mid]:
- hi=mid
- else:
- lo=mid+1
- return False
- import bisect
- def test_binary_search2():
- seq=[1,2,5,6,7,10,12,12,14,15]
- key=6
- print(binary_search_iter(seq,key))
- print(binary_search_rec(seq,key))
复制代码 |
|