此合并排序实现中的错误是什么?

What is the error in this merge sort implementation?

def merge(l1,l2):

  (lmerged,i,j) = ([],0,0)

  while i+j < len(l1) + len(l2):
    if i == len(l1):
      lmerged.append(l2[j])
      j = j+1
    elif j == len(l2):
      lmerged.append(l1[i])
      i = i+1
    elif l1[i] < l2[j]:
      lmerged.append(l1[i])
      i = i+1
    elif l2[j] < l1[i]:
      lmerged.append(l2[j])
      j = j+1
    else:
      lmerged.append(l1[i])
      i = i+1
      j = j+1

  return(lmerged)    

def mergesort(l):
  if len(l) < 2:
    return(l)
  else:
    n = len(l)
    leftsorted = mergesort(l[:n//2])
    rightsorted = mergesort(l[n//2:])
    return(merge(leftsorted,rightsorted))

此代码示例中的错误是什么?此实施将在哪个列表上失败?是逻辑正确还是我的逻辑本身有问题?

未通过测试[1, 1] 排序为 [1]

修复:删除最后一个else块中merge函数中的j = j + 1