归并排序

def merge_sort(a, left, right):
    if left == right:
        return [a[left]]

    mid = left + (right-left) // 2
    l1 = merge_sort(a, left, mid)
    l2 = merge_sort(a, mid+1, right)
    return merge_two_arr(l1, l2)


def merge_two_arr(l1, l2):
    result = []
    i = 0
    j = 0
    while i < len(l1) and j < len(l2):
        if l1[i] < l2[j]:
            result.append(l1[i])
            l1.pop(0)
        else:
            result.append(l2[j])
            l2.pop(0)

    if l1:
        result.extend(l1)
    if l2:
        result.extend(l2)
    return result

a = [1, 23, 34, 4, 5, 6, 6]
result = merge_sort(a, 0, len(a)-1)
print(result)


posted @ 2021-03-07 22:27  KbMan  阅读(28)  评论(0编辑  收藏  举报