修改后的 MergeSort 运行时

Modified MergeSort runtime

帮我理解Modified MergeSort算法的运行时间。 在经典的MergeSort中,将输入数组分成两部分递归排序时,执行时间为:nlogn

MergeSort 算法的执行时间是多少 将输入数组分成三部分(不是一半),每三分之一递归排序,最后使用三参数 Merge 合并子程序合并结果。

  1. n
  2. nlogn
  3. n(对数 n)^2
  4. n^2logn

在经典的Merge Sort算法中,大约有n * log2(n)次比较和同样多的元素复制操作,因此时间复杂度为O(n.log(n)) 因为乘法常数是隐式的。

如果不是将数组拆分为 2 个部分,而是拆分为 3 个部分,对这些部分递归执行相同的排序并将 3 个排序的切片合并为一个,比较次数增加到大约 2 * n * log3(n)且元素副本数减少为n * log3(n),但两者仍与n * log(n)成正比。分解出乘法常数,你仍然得到 O(n.log(n)).

的时间复杂度