我知道还有其他有关“就地”算法含义的问题,但我的问题有所不同。我知道这意味着算法会更改原始输入数据,而不是为输出分配新的空间。但是我不确定的是辅助内存是否有用。即:

  • (如果算法分配了一些额外的内存以计算结果
  • )
  • (如果算法具有非恒定数量的递归调用,这些调用会占用堆栈上的额外空间)
  • 最佳答案

    就地通常意味着亚线性附加空间。这不一定是该术语含义的一部分。只是使用线性或更大空间的就地算法并不有趣。如果要分配O(n)空间以在与输入相同的空间中计算输出,则可以同样容易地在新鲜内存中生成输出并保持相同的内存范围。就地计算的值(value)已丢失。

    维基百科走得更远,说the amount of extra storage is constant。但是,在我所看到的用法中,仍然使用log(n)额外空间在输入上写入输出的算法(例如mergesort)。

    关于algorithm - "in-place"到底是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26289996/

    10-12 05:22