什么是' 6n' (6n(logn + 1)= 6nlogn + 6n)合并排序算法的分析?

时间:2016-09-20 05:53:17

标签: algorithm sorting merge

实施合并所需的操作数量为:

:::::: 6n(logn + 1)= 6nlogn + 6n。

logn + 1是合并排序中的级别数。什么是6n?

2 个答案:

答案 0 :(得分:2)

在粗略合并排序的情况下:两个读取比较两个元素,一个读取和一个写入将较小的元素复制到工作数组,然后另一个读取和另一个写入将元素复制回原始数组,每个元素总共有6次内存访问(除了到达运行结束的边界情况,在这种情况下,另一次运行的其余部分只是在没有比较的情况下被复制)。更优化的合并排序通过交替合并方向来避免复制步骤,取决于合并传递(如果自下而上),或递归级别(如果自上而下),将6减少到4.如果元素适合寄存器,则之后比较一下,元素将在寄存器中,不必重新读取,将6减少到3。

答案 1 :(得分:0)

我不确定是什么意思"什么是6n"?如果您询问算法的复杂性(合并排序),可以将其缩减为nlog(n)。您可以忽略问题中的系数,因为在考虑大O复杂度时它们可以忽略不计。在计算nlog(n)+ n时,您也可以忽略n,因为它将以比nlog(n)慢得多的速率增加。这使您感到复杂的nlog(n)。