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