1+ #!/usr/bin/env python
2+
3+ __author__ = "bt3"
4+
5+ def binary_search (array , value ):
6+ last , first = len (array ), 0
7+
8+ while first < last :
9+ mid = (last - first )// 2
10+ item = array [mid ]
11+
12+ if item == value :
13+ return True
14+
15+ elif item < value :
16+ last = mid
17+
18+ else :
19+ first = mid
20+
21+ return False
22+
23+ def binary_search_rec (array , value , first = 0 , last = None ):
24+ last = last or len (array )
25+ if len (array [first :last ]) < 1 :
26+ return False
27+
28+ mid = (last - first )// 2
29+ if array [mid ] == value :
30+ return True
31+ elif array [mid ] < value :
32+ return binary_search_rec (array , value , first = first , last = mid )
33+ else :
34+ return binary_search_rec (array , value , first = mid , last = last )
35+
36+
37+ if __name__ == '__main__' :
38+ array = [3 , 4 , 6 , 7 , 10 , 11 , 34 , 67 , 84 ]
39+ value = 6
40+ assert (binary_search (array , value ) == True )
41+ assert (binary_search_rec (array , value ) == True )
42+ value = 8
43+ assert (binary_search (array , value ) == False )
44+ assert (binary_search_rec (array , value ) == False )
45+ array = [8 ]
46+ assert (binary_search (array , value ) == True )
47+ assert (binary_search_rec (array , value ) == True )
48+ array = []
49+ assert (binary_search (array , value ) == False )
50+ assert (binary_search_rec (array , value ) == False )
0 commit comments