My issue
give the full code
My code
def Merge(a, size_a, b, size_b, c):
idx1 = 0
idx2 = 0
idx = 0
while idx1 < size_a and idx2 < size_b:
if a[idx1] < b[idx2]:
c[idx] = a[idx1]
idx1 += 1
else:
c[idx] = b[idx2]
idx2 += 1
idx += 1
while idx1 < size_a:
c[idx] = a[idx1]
idx1 += 1
idx += 1
while idx2 < size_b:
c[idx] = b[idx2]
idx2 += 1
idx += 1
def Sort(a, size_a):
if size_a <= 1:
return
mid = size_a // 2
sz1 = mid
sz2 = size_a - mid
a1 = [0] * sz1
a2 = [0] * sz2
for i in range(sz1):
a1[i] = a[i]
for i in range(sz1, size_a):
a2[i - sz1] = a[i]
Sort(a1, sz1)
Sort(a2, sz2)
Merge(a1, sz1, a2, sz2, a)
if __name__ == "__main__":
n = int(input())
a = [int(input()) for _ in range(n)]
Sort(a, n)
for i in range(n):
print(a[i], end=" ")
print()
Learning course: Analysis and Design of Algorithms
Problem Link: Merge sort algorithm in Analysis and Design of Algorithms