python排序的空间复杂度是多少?
python排序需要多少空间复杂度?我在任何地方都找不到关于这个的任何权威文档Python的内置排序方法是名为Timsort的合并排序的派生,更多信息请参见-python排序的空间复杂度是多少?,python,sorting,space-complexity,Python,Sorting,Space Complexity,python排序需要多少空间复杂度?我在任何地方都找不到关于这个的任何权威文档Python的内置排序方法是名为Timsort的合并排序的派生,更多信息请参见- 它本质上并不比合并排序更好或更差,这意味着它的运行时间平均为O(n logn),它的空间复杂度为Ω(n)空间复杂度定义为算法在n元素方面需要多少额外空间。而且,即使根据排序方法,排序方法对列表进行适当排序,但它确实会使用一些额外的空间,如实现的中所述: timsort可能需要一个包含多达N//2个指针的临时数组,这意味着32位框上有多达2
它本质上并不比合并排序更好或更差,这意味着它的运行时间平均为
O(n logn)
,它的空间复杂度为Ω(n)
空间复杂度定义为算法在n
元素方面需要多少额外空间。而且,即使根据排序方法,排序方法对列表进行适当排序,但它确实会使用一些额外的空间,如实现的中所述:
timsort可能需要一个包含多达N//2个指针的临时数组,这意味着32位框上有多达2*N个额外字节。在对随机数据进行排序时,可能需要一个如此大的临时数组;对于具有重要结构的数据,它可以不使用任何额外的堆内存就可以离开
因此,最坏情况下的空间复杂度是
O(N)
和最佳情况下的O(1)
。。。这并不能回答问题。好吧,你肯定是在对占用内存空间的东西进行排序。是的,你当然是,但空间复杂度是在所需的额外内存中度量的,所以不是数组本身。尽管如此,我还是看了一下实现描述,发现它们确实使用了一些额外的空间来实现算法。我的答案也相应地更新了