合并排序的空间复杂度为O(n),该方法看起来像void sort(int[] arr)
。
如果我创建一个方法int[] sort(int[] arr)
,该方法不修改输入数组,但是返回一个新的排序数组,那么该方法/算法的空间复杂度是多少?
答案 0 :(得分:0)
取决于合并排序的实现。
由于您无法在每个递归调用中更改输入数组,因此算法的空间复杂度为S(n) = 2S(n/2) + n
。因此,S(n) = Theta(n log n)
。
如果合并排序的实现不是递归的(迭代合并排序),则可以将输入数组复制到可变数组中,然后对该数组进行就地排序。因此,此合并排序实现的空间复杂度为Theta(n)
。