合并两个有序列表——递归&非递归

Posted 回冬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了合并两个有序列表——递归&非递归相关的知识,希望对你有一定的参考价值。

1、递归

def MergeTwo(l1, l2, tmp):
    if len(l1) == 0 or len(l2) == 0:
        tmp.extend(l1)
        tmp.extend(l2)
        return tmp
    else:
        if l1[0] < l2[0]:
            tmp.append(l1[0])
            del l1[0]
        else:
            tmp.append(l2[0])
            del l2[0]
        return MergeTwo(l1, l2, tmp)

def mergesort2(l1, l2):
    return MergeTwo(l1, l2, [])

print(mergesort2(l1=[2, 4, 6, 8], l2=[1, 3, 5, 7, 9]))

2、非递归

def MergeTwo(l1, l2):
    tmp = []
    while len(l1) > 0 and len(l2) > 0:
        if l1[0] < l2[0]:
            tmp.append(l1[0])
            del l1[0]
        else:
            tmp.append(l2[0])
            del l2[0]
    tmp.extend(l1)
    tmp.extend(l2)
    return tmp

print(MergeTwo(l1=[2, 4, 6, 8], l2=[1, 3, 5, 7, 9]))

 

以上是关于合并两个有序列表——递归&非递归的主要内容,如果未能解决你的问题,请参考以下文章

归并排序 (递归 && 非递归)

合并两个有序链表【递归、迭代】

高速排序 归并排序的非递归版本号 备忘

合并两个有序链表

链表:合并两个有序的链表

合并两个排序的链表使之依然有序(不开辟新空间在原链表上操作的非递归版本)