python数据结构与算法第十三天归并排序

Posted liuzhiqaingxyz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python数据结构与算法第十三天归并排序相关的知识,希望对你有一定的参考价值。

1.代码实现

def merge_sort(alist):
    if len(alist) <= 1:
        return alist
    # 二分分解
    num = len(alist)/2
    left = merge_sort(alist[:num])
    right = merge_sort(alist[num:])
    # 合并
    return merge(left,right)

def merge(left, right):
    ‘‘‘合并操作,将两个有序数组left[]和right[]合并成一个大的有序数组‘‘‘
    #left与right的下标指针
    l, r = 0, 0
    result = []
    while l<len(left) and r<len(right):
        if left[l] < right[r]:
            result.append(left[l])
            l += 1
        else:
            result.append(right[r])
            r += 1
    result += left[l:]
    result += right[r:]
    return result

alist = [54,26,93,17,77,31,44,55,20]
sorted_alist = mergeSort(alist)
print(sorted_alist)

2.注意:

(1)归并排序采用的先拆分后合并的思想;递归拆分到不能继续拆分时停止拆分,然后进行比较,最后递归合并

3.时间复杂度

最优时间复杂度:O(nlogn)

最坏时间复杂度:O(nlogn)

稳定性:稳定

 

以上是关于python数据结构与算法第十三天归并排序的主要内容,如果未能解决你的问题,请参考以下文章

python学习第十三天,内置函数

JavaSE第十三天20160819

python第十三天

PYthon第十三天

数据结构算法[c语言]

第十六周 项目3--归并排序算法改进