美文网首页
归并排序 by Python

归并排序 by Python

作者: 慧鑫coming | 来源:发表于2019-01-31 05:46 被阅读0次

最好时间复杂度:O(n*logn)
最坏时间复杂度:O(n*logn)
平均时间复杂度:O(n*logn)
空间复杂度:O(n)
是否是稳定排序:Yes
是否是原地排序:No
python 实现:

class Solution:
    def mergeSort(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        length = len(nums)
        if length <= 1:
            return nums
        mid = length // 2
        # 分治 + 递归
        left = self.mergeSort(nums[:mid])
        right = self.mergeSort(nums[mid:])
        return self.merge(left, right)

    def merge(self, left, right):
        """
        :type left: List[int]
        :type right: List[int]
        :rtype: List[int]
        """
        res = []
        p = q = 0
        while p != len(left) and q != len(right):
            # 使用 “<=” 保证排序的稳定性
            if left[p] <= right[q]:
                res.append(left[p])
                p += 1
            else:
                res.append(right[q])
                q += 1
        l = left[p:] or right[q:]
        res.extend(l)
        return res


if __name__ == "__main__":
    nums = [1,3,2,4,6,8,4,5,6,7,11,13,10,21,12]
    s = Solution()
    r = s.mergeSort(nums)
    print(r)

相关文章

  • Python排序算法有哪几种?

    python排序算法有哪些?python中常见的排序算法有:插入排序、选择排序、冒泡排序、快速排序、归并排序、希尔...

  • python实现归并排序(MergeSort)

    python实现【归并排序】(MergeSort) 算法原理及介绍 归并排序的核心原理是采用分治法(Divide ...

  • 排序算法详细代码实现

    算法分类 算法时间复杂度 选择排序 插入排序 C++实现 Python实现 冒泡排序 Python实现 归并排序 ...

  • 第三章:高级排序算法

    归并排序算法(mergeSort) 算法思想:Python使用函数实现: 自底向上的归并排序算法 算法思想:Pyt...

  • 为什么归并排序分两组进行而不是更多?

    归并排序想必大家都不陌生,我之前在学习算法的时候也分享过,见前文Python-排序-归并排序中如何用哨兵来追求极致...

  • 排序

    排序 快速排序 归并排序 计数排序 Python实现 理解 详解 稳定:如果a原本在b前面,而a=b,排序之后a仍...

  • 七大排序算法的 Python

    本文用Python实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。 1、插...

  • 八大排序算法的 Python 实现(转)

    本文用Python实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。 1、插...

  • Python实现程序员必备之排序算法汇总

    本文用Python实现了快速排序、插入排序、希尔排序、归并排序、堆排序、选择排序、冒泡排序共7种排序算法。 一、快...

  • Python 实现七大排序算法

    本文用 Python 实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序。 先整体看一下...

网友评论

      本文标题:归并排序 by Python

      本文链接:https://www.haomeiwen.com/subject/xnnhsqtx.html