【发布时间】:2018-07-23 08:56:40
【问题描述】:
python 排序的空间复杂度是多少?我在任何地方都找不到任何明确的文档
【问题讨论】:
标签: python sorting space-complexity
python 排序的空间复杂度是多少?我在任何地方都找不到任何明确的文档
【问题讨论】:
标签: python sorting space-complexity
Python 的内置排序方法是合并排序的衍生品,称为 Timsort,更多信息请点击此处 - https://en.wikipedia.org/wiki/Timsort。
它本质上并不比归并排序好或差,这意味着它的平均运行时间是O(n log n),它的空间复杂度是Ω(n)
【讨论】:
空间复杂度定义为算法在N 元素方面需要多少额外空间。即使根据docs,sort 方法对列表进行了适当的排序,它确实使用了一些额外的空间,如实现的description 中所述:
timsort 可以要求包含多达 N//2 个指针的临时数组,这意味着在 32 位盒子上多达 2*N 个额外字节。在对随机数据进行排序时,可以预期需要这么大的临时数组;对于具有重要结构的数据,它可能会在不使用任何额外堆内存的情况下消失。
因此,最坏情况下的空间复杂度是O(N),最好情况下是O(1)
【讨论】: