合并排序的空间复杂性分析(C ++)

时间:2017-01-04 18:09:18

标签: c++ algorithm sorting c++14

由于数组在C ++中通过引用传递,合并排序(递归)的空间复杂性仍然是O(n)吗?如果是,那为什么呢? (我认为,由于数组的元素没有被复制,所以空间复杂度应该是常数,即O(k)。)

1 个答案:

答案 0 :(得分:1)

空间复杂度在数组参数调用方法中独立地保持为O(n) - 它是(经典)合并排序实现所需的缓冲区大小。

所以你有输入数组(它通常也是输出数组)和相同大小的缓冲区数组 - 这就是为什么额外的空间是O(n)