合并两个排序列表以在Python中形成更大排序列表的程序

假设我们有两个排序的列表A和B。我们必须将它们合并并仅形成一个排序的列表C。列表的大小可能会有所不同。

例如,假设A = [1,2,4,7]和B = [1,3,4,5,6,8],则合并列表C将为[1,1,2,3,4, 4,5,6,7,8]

我们将使用递归解决此问题。所以该功能将如下所示工作-

  • x:=一个新列表

  • i:= 0,j:= 0

  • 当i <(lst0)的大小而j <(lst1)的大小时

    • 在x的末尾插入lst0 [i]

    • 在x的末尾插入lst1 [j]

    • i:= i + 1,j:= j + 1

    • 在x的末尾插入lst0 [i]

    • i:= i + 1

    • 在x的末尾插入lst1 [j]

    • j:= j + 1

    • 如果lst0 [i]> lst1 [j],则

    • 否则,当lst0 [i] <lst1 [j]时,

    • 除此以外,

    • 当i <len(lst0)时

      • 在x的末尾插入lst0 [i]

      • i:= i + 1

    • 当j <len(lst1)时

      • 在x的末尾插入lst1 [j]

      • j:= j + 1

    • 返回x

    让我们看一下实现以获得更好的理解

    示例

    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]))

    输入值

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

    输出结果

    [1, 1, 2, 3, 4, 4, 5, 6, 7, 8]
    猜你喜欢