input: Write a function to merge two sorted lists A and B into a single sorted list. The function should compare the first elements of both lists and add the smaller element to the result list. If an element is added, move the pointer to the next element of that list. Continue this process until all elements of both lists are added to the result list. If one list is exhausted before the other, the remaining elements of the non-empty list should be appended to the result list.
  def merge_sort(A, B):
   result = [] 
   i, j = 0, 0
  
  # Compare elements and add lower one to result
  while i < len(A) and j < len(B):
   if A[i] < B[j]:
   result.append(A[i])
   i += 1
   else:
   result.append(B[j])
   j += 1
  
  # Add remaining elements
  result += A[i:]
  result += B[j:]
  
  return result
  
  #Test the algorithm
  assert merge_sort([3, 6, 8, 10, 11], [2, 5, 7, 12])==[2, 3, 5, 6, 7, 8, 10, 11, 12]
  assert merge_sort([1, 3, 5], [2, 4, 6])==[1, 2, 3, 4, 5, 6]
  assert merge_sort([1], [2])==[1, 2]
  assert merge_sort([], [1, 2, 3])==[1, 2, 3]
  assert merge_sort([4, 5], [])==[4, 5]
output: def merge_sort(A, B):
   result = [] 
   i, j = 0, 0
  
   while i < len(A) and j < len(B):
    if A[i] < B[j]:
     result.append(A[i])
     i += 1
    else:
     result.append(B[j])
     j += 1
  
   result += A[i:]
   result += B[j:]
  
   return result