I'm trying to implement mergeSort in python but getting Type error.
I tried debugging my code but didn't got any success.
def merge(L, R):
(C, m, n) = ([], len(L), len(R))
(i,j) = (0,0)
while i+j < m+n:
if i == m: # Case 1 -> List A is empty
C.append(R[j])
j += 1
elif j == n: # Case 2 -> List B is empty
C.append(L[i])
i += 1
elif L[i] <= R[j]: # Case 3 -> Head of A is smaller
C.append(L[i])
i += 1
elif L[i] > R[j]:
C.append(R[j])
j += 1
print(C)
def mergeSort(A, left, right):
if right - left <= 1: # Base Case
return(A[left:right])
if right - left > 1: # Recurive call
mid = (left+right)//2
L = mergeSort(A, left, mid)
R = mergeSort(A, mid, right)
return(merge(L, R))
If anyone know what I'm doing wrong, please guide me to the right way.
merge
has to return C
, not print it.
def merge(L, R):
(C, m, n) = ([], len(L), len(R))
(i,j) = (0,0)
while i+j < m+n:
if i == m: # Case 1 -> List A is empty
C.append(R[j])
j += 1
elif j == n: # Case 2 -> List B is empty
C.append(L[i])
i += 1
elif L[i] <= R[j]: # Case 3 -> Head of A is smaller
C.append(L[i])
i += 1
elif L[i] > R[j]:
C.append(R[j])
j += 1
return C