1
+ def binary_search_iterative (ordered_list , term ):
2
+ size_of_list = len (ordered_list ) - 1
3
+ index_of_first_element = 0
4
+ index_of_last_element = size_of_list
5
+
6
+ while index_of_first_element <= index_of_last_element :
7
+ mid_point = (index_of_first_element + index_of_last_element )// 2
8
+
9
+ if ordered_list [mid_point ] == term :
10
+ return mid_point
11
+ if ordered_list [mid_point ] > term :
12
+ index_of_last_element = mid_point - 1
13
+ else :
14
+ index_of_first_element = mid_point + 1
15
+ if index_of_first_element > index_of_last_element :
16
+ return None
17
+
18
+
19
+ print ("---First Output---\n " )
20
+ list1 = [10 , 30 , 100 , 120 , 500 ]
21
+
22
+ search_term = 10
23
+ index_position1 = binary_search_iterative (list1 , search_term )
24
+ if index_position1 is None :
25
+ print ("The data item {} is not found" .format (search_term ))
26
+ else :
27
+ print ("The data item {} is found at position {}" .format (search_term , index_position1 ))
28
+
29
+ print ("---Second Output---\n " )
30
+
31
+ list2 = ['book' ,'data' ,'packt' , 'structure' ]
32
+
33
+ search_term2 = 'structure'
34
+ index_position2 = binary_search_iterative (list2 , search_term2 )
35
+ if index_position2 is None :
36
+ print ("The data item {} is not found" .format (search_term2 ))
37
+ else :
38
+ print ("The data item {} is found at position {}" .format (search_term2 , index_position2 ))
39
+
40
+
41
+
42
+ print ('---Binary Search Recursive---\n ' )
43
+ #Recursive Binary Search
44
+ def binary_search_recursive (ordered_list , first_element_index , last_element_index , term ):
45
+ if last_element_index < first_element_index :
46
+ return None
47
+ else :
48
+ mid_point = (first_element_index + last_element_index ) // 2
49
+ if ordered_list [mid_point ] > term :
50
+ return binary_search_recursive (ordered_list , first_element_index , mid_point - 1 , term )
51
+ elif ordered_list [mid_point ] < term :
52
+ return binary_search_recursive (ordered_list , mid_point + 1 , last_element_index , term )
53
+ else :
54
+ return mid_point
55
+
56
+ print ("Binary Search Recursive output1--\n " )
57
+ list1 = [10 , 30 , 100 , 120 , 500 ]
58
+
59
+ search_term = 10
60
+ index_position1 = binary_search_recursive (list1 , 0 , len (list1 )- 1 , search_term )
61
+ if index_position1 is None :
62
+ print ("The data item {} is not found" .format (search_term ))
63
+ else :
64
+ print ("The data item {} is found at position {}" .format (search_term , index_position1 ))
65
+
66
+ print ('\n ' )
67
+
68
+ print ("Binary Search Recursive output2--\n " )
69
+ list2 = ['book' ,'data' ,'packt' , 'structure' ]
70
+
71
+ search_term2 = 'data'
72
+ index_position2 = binary_search_recursive (list2 , 0 , len (list1 )- 1 , search_term2 )
73
+ if index_position2 is None :
74
+ print ("The data item {} is not found" .format (search_term2 ))
75
+ else :
76
+ print ("The data item {} is found at position {}" .format (search_term2 , index_position2 ))
0 commit comments