修改后的 MergeSort 运行时
Modified MergeSort runtime
帮我理解Modified MergeSort算法的运行时间。
在经典的MergeSort中,将输入数组分成两部分递归排序时,执行时间为:nlogn
MergeSort 算法的执行时间是多少
将输入数组分成三部分(不是一半),每三分之一递归排序,最后使用三参数 Merge 合并子程序合并结果。
- n
- nlogn
- n(对数 n)^2
- 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)).
的时间复杂度
帮我理解Modified MergeSort算法的运行时间。 在经典的MergeSort中,将输入数组分成两部分递归排序时,执行时间为:nlogn
MergeSort 算法的执行时间是多少 将输入数组分成三部分(不是一半),每三分之一递归排序,最后使用三参数 Merge 合并子程序合并结果。
- n
- nlogn
- n(对数 n)^2
- 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)).