Skip to content

Commit 06013f1

Browse files
committed
InterpolationSearch.py finally approved
1 parent cb15693 commit 06013f1

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
def nearest_mid(input_list, lower_index, upper_index, search_value):
2+
mid = lower_index + (( upper_index - lower_index)/(input_list[upper_index] - input_list[lower_index])) * (search_value - input_list[lower_index])
3+
return int(mid)
4+
5+
def interpolation_search(ordered_list, search_value):
6+
7+
low_index = 0
8+
upper_index = len(ordered_list) - 1
9+
while low_index <= upper_index:
10+
mid_point = nearest_mid(ordered_list, low_index, upper_index, search_value)
11+
if mid_point > upper_index or mid_point < low_index:
12+
return None
13+
if ordered_list[mid_point] == search_value:
14+
return mid_point
15+
if search_value > ordered_list[mid_point]:
16+
low_index = mid_point + 1
17+
else:
18+
upper_index = mid_point - 1
19+
if low_index > upper_index:
20+
return None
21+
22+
23+
list1 = [44, 60, 75, 100, 120, 230, 250]
24+
a = interpolation_search(list1, 120)
25+
print("Index position of value 120 is ", a)
26+
27+
28+
"""
29+
interpolation search may work better than binary search if the given data is uniformly distributed.
30+
"""

0 commit comments

Comments
 (0)