歸併排序

def merge_sort(num):
    import math
    if(len(num) < 2):
        return num
    middle = int(math.floor(len(num)/2))
    left, right = num[0:middle], num[middle:]
    return merge(merge_sort(left), merge_sort(right))

def merge(left, right):
    result = []
    while left and right:
        if left[0] <= right[0]:
            result.append(left.pop(0))
        else:
            result.append(right.pop(0))
    while left:
        result.append(left.pop(0))
    while right:
        result.append(right.pop(0))
    return result

if __name__ == '__main__':
    num = [1, 9, 8, 2, 5, 3, 4, 7, 0, 6]
    print num
    result = merge_sort(num)
    print result
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章