歸併排序python版本

1、問題描述:排序算法中歸併排序是於1945年由馮·諾伊曼首次提出,可以通過遞歸實現和非遞歸實現,本次採用遞歸實現。遞歸實現的歸併排序是算法設計中分治策略的典型應用。
2、性能分析:
最差時間複雜度爲:O(nlogn)
最優時間複雜度爲:O(nlogn)
平均時間複雜度爲:O(nlogn)
所需輔助空間爲:O(n)
穩定性:穩定
3、代碼

def merge_sort(a):
    if len(a) <= 1:
        return a
    mid = len(a)//2
    left = merge_sort(a[:mid])
    right = merge_sort(a[mid:])
    res = []
    i = j = 0
    while i < len(left) and j < len(right):
        if left[i] <= right[j]:
            res.append(left[i])
            i += 1
        else:
            res.append(right[j])
            j += 1
    if i == len(left):
        res.extend(right[j:])
    else:
        res.extend(left[i:])
    return res

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章