归并排序

来源:互联网 发布:思科软件技术培训 编辑:程序博客网 时间:2024/05/22 11:47

def mergesort(L):
    print L
    if len(L) < 2:
        return L[:]
    else:
        middle = len(L) / 2
        left = mergesort(L[:middle])
        right = mergesort(L[middle:])
        together = merge(left, right)
        print 'merged', together
        return together

 

def merge(left, right):
    result = []
    i, j = 0, 0
    while i < len(left) and j < len(right):
        if left[i] < right[j]:
            result.append(left[i])
            i += 1
        else:
            result.append(right[j])
            j += 1
    if i < len(left):
        result += left[i:]
    else:
        result += right[j:]

    return result

 

原创粉丝点击