Skip to content

Merge Sort 的迭代终止条件 #27

Open
@jiaming-cs

Description

@jiaming-cs

感谢您的代码,很简洁,对我准备面试非常受用!

但是我发现merge_sort的终止条件应该为if len(lst) <= 1 而不是if not lst,否则程序会无限递归。

def merge_sort(lst):
    if len(lst) <= 1:
        return lst
    mid = len(lst) // 2
    left = merge_sort(lst[:mid])
    right = merge_sort(lst[mid:])
    return merge(left, right)

def merge(left, right):
    l, r, res = 0, 0, []
    while l < len(left) and r < len(right):
        if left[l] < right[r]:
            res.append(left[l])
            l += 1
        else:
            res.append(right[r])
            r += 1
    return res + left[l:] + right[r:]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions