我正在研究 2 路合并排序算法,并在思考是否通过减少合并通道可以在时间方面获得更好的收益。
例如,在 2 路合并中,我们有以下重复:
T(n) = 2T(n/2) + O(n)
这具有 N.log-base2(N) 的时间复杂度
如果我将问题除以 4 并合并 4 个子数组,我将得到
T(n) = 4T(n/4) + O(n)
这应该具有 N.log-base4(N) 的时间复杂度
由于合并通道的数量减少了,在实现合并排序时是否应该考虑这一点?
例如,对于 64 个元素的数组,第一种方法将有 6 次通过,而使用第二种方法将有 3 次通过。
编辑:
好的,所以使用 2T(n/2) 我们每次通过进行 N 次比较,而使用 4T(n/4) 我们最终每次通过进行 3*N 比较?将元素移动到结果数组的成本如何,每次通过时都保持不变吗?