-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtwo_list_median.py
60 lines (51 loc) · 1.53 KB
/
two_list_median.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# A Simple Merge based O(n) Python 3 solution
# to find median of two sorted lists
# This function returns median of ar1[] and ar2[].
# Assumptions in this function:
# Both ar1[] and ar2[] are sorted arrays
# Both have n elements
def getMedian(ar1, ar2, n):
i = 0 # Current index of i/p list ar1[]
j = 0 # Current index of i/p list ar2[]
m1 = -1
m2 = -1
# Since there are 2n elements, median
# will be average of elements at index
# n-1 and n in the array obtained after
# merging ar1 and ar2
count = 0
while count < n + 1:
count += 1
# Below is to handle case where all
# elements of ar1[] are smaller than
# smallest(or first) element of ar2[]
if i == n:
m1 = m2
m2 = ar2[0]
break
# Below is to handle case where all
# elements of ar2[] are smaller than
# smallest(or first) element of ar1[]
elif j == n:
m1 = m2
m2 = ar1[0]
break
if ar1[i] < ar2[j]:
m1 = m2 # Store the prev median
m2 = ar1[i]
i += 1
else:
m1 = m2 # Store the prev median
m2 = ar2[j]
j += 1
return (m1 + m2) / 2
# Driver code to test above function
ar1 = [1, 12, 15, 26, 38]
ar2 = [2, 13, 17, 30, 45]
n1 = len(ar1)
n2 = len(ar2)
if n1 == n2:
print("Median is ", int(getMedian(ar1, ar2, n1)))
else:
print("Doesn't work for arrays of unequal size")
# This code is contributed by "Sharad_Bhardwaj".