实施合并所需的操作数量为:
:::::: 6n(logn + 1)= 6nlogn + 6n。
logn + 1是合并排序中的级别数。什么是6n?
答案 0 :(得分:2)
在粗略合并排序的情况下:两个读取比较两个元素,一个读取和一个写入将较小的元素复制到工作数组,然后另一个读取和另一个写入将元素复制回原始数组,每个元素总共有6次内存访问(除了到达运行结束的边界情况,在这种情况下,另一次运行的其余部分只是在没有比较的情况下被复制)。更优化的合并排序通过交替合并方向来避免复制步骤,取决于合并传递(如果自下而上),或递归级别(如果自上而下),将6减少到4.如果元素适合寄存器,则之后比较一下,元素将在寄存器中,不必重新读取,将6减少到3。
答案 1 :(得分:0)
我不确定是什么意思"什么是6n"?如果您询问算法的复杂性(合并排序),可以将其缩减为nlog(n)。您可以忽略问题中的系数,因为在考虑大O复杂度时它们可以忽略不计。在计算nlog(n)+ n时,您也可以忽略n,因为它将以比nlog(n)慢得多的速率增加。这使您感到复杂的nlog(n)。