【问题标题】:What is the space complexity of the python sort?python排序的空间复杂度是多少?
【发布时间】:2018-07-23 08:56:40
【问题描述】:

python 排序的空间复杂度是多少?我在任何地方都找不到任何明确的文档

【问题讨论】:

    标签: python sorting space-complexity


    【解决方案1】:

    Python 的内置排序方法是合并排序的衍生品,称为 Timsort,更多信息请点击此处 - https://en.wikipedia.org/wiki/Timsort

    它本质上并不比归并排序好或差,这意味着它的平均运行时间O(n log n),它的空间复杂度Ω(n)

    【讨论】:

    • ...这没有回答问题。
    【解决方案2】:

    空间复杂度定义为算法在N 元素方面需要多少额外空间。即使根据docssort 方法对列表进行了适当的排序,它确实使用了一些额外的空间,如实现的description 中所述:

    timsort 可以要求包含多达 N//2 个指针的临时数组,这意味着在 32 位盒子上多达 2*N 个额外字节。在对随机数据进行排序时,可以预期需要这么大的临时数组;对于具有重要结构的数据,它可能会在不使用任何额外堆内存的情况下消失。

    因此,最坏情况下的空间复杂度是O(N),最好情况下是O(1)

    【讨论】:

    • 嗯,你肯定是在排序一些占用内存空间的东西。
    • 是的,你当然是,但空间复杂度是用额外的内存来衡量的,而不是数组本身。尽管如此,我还是查看了实现描述,并认为他们确实使用了更多额外的空间来实现算法。我的答案已相应更新
    猜你喜欢
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 2021-08-03
    • 2014-01-01
    • 2015-06-06
    • 2011-09-25
    • 2017-11-11
    相关资源
    最近更新 更多