不可变数组中合并排序的空间复杂度

时间:2019-01-10 16:07:43

标签: algorithm space-complexity

合并排序的空间复杂度为O(n),该方法看起来像void sort(int[] arr)

如果我创建一个方法int[] sort(int[] arr),该方法不修改输入数组,但是返回一个新的排序数组,那么该方法/算法的空间复杂度是多少?

1 个答案:

答案 0 :(得分:0)

取决于合并排序的实现。

递归

由于您无法在每个递归调用中更改输入数组,因此算法的空间复杂度为S(n) = 2S(n/2) + n。因此,S(n) = Theta(n log n)

迭代

如果合并排序的实现不是递归的(迭代合并排序),则可以将输入数组复制到可变数组中,然后对该数组进行就地排序。因此,此合并排序实现的空间复杂度为Theta(n)