Syntax error Program to merge two sorted list to form larger sorted list in Python

Program to merge two sorted list to form larger sorted list in Python



Suppose we have two sorted lists A and B. We have to merge them and form only one sorted list C. The size of lists may different.

For an example, suppose A = [1,2,4,7] and B = [1,3,4,5,6,8], then merged list C will be [1,1,2,3,4,4,5,6,7,8]

We will solve this using recursion. So the function will work like below −

  • x:= a new list
  • i:= 0, j:= 0
  • while i < size of (lst0) and j < size of (lst1), do
    • if lst0[i] > lst1[j], then
      • insert lst1[j] at the end of x
      • j:= j+1
    • otherwise when lst0[i]<lst1[j], then
      • insert lst0[i] at the end of x
      • i:= i+1
    • otherwise,
      • insert lst0[i] at the end of x
      • insert lst1[j] at the end of x
      • i:= i+1, j:= j+1
  • while i<len(lst0), do
    • insert lst0[i] at the end of x
    • i:= i+1
  • while j<len(lst1), do
    • insert lst1[j] at the end of x
    • j:= j+1
  • return x

Let us see the implementation to get better understanding

Example

 Live Demo

class Solution:
   def solve(self, lst0, lst1):
      x=[]
      i=0
      j=0
      while(i<len(lst0) and j<len(lst1)):
         if(lst0[i]>lst1[j]):
            x.append(lst1[j])
            j=j+1
         elif(lst0[i]<lst1[j]):
            x.append(lst0[i])
            i=i+1
         else:
            x.append(lst0[i])
            x.append(lst1[j])
            i=i+1
            j=j+1
      while(i<len(lst0)):
         x.append(lst0[i])
         i=i+1
      while(j<len(lst1)):
         x.append(lst1[j])
         j=j+1
      return x
ob = Solution()
print(ob.solve([1,2,4,7], [1,3,4,5,6,8]))

Input

[1,2,4,7], [1,3,4,5,6,8]

Output

[1, 1, 2, 3, 4, 4, 5, 6, 7, 8]
Updated on: 2020-10-06T06:31:29+05:30

231 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements