【问题标题】:What is '6n' ( 6n (logn+1)= 6nlogn+6n ) in analysis of merge sort algorithm?归并排序算法分析中的“6n”( 6n (logn+1)= 6nlogn+6n )是什么?
【发布时间】:2016-09-20 05:53:17
【问题描述】:

实现合并所需的操作数是:

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

logn+1 是归并排序的层数。这里的 6n 是什么?

【问题讨论】:

    标签: algorithm sorting merge


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-20
        • 2021-07-16
        • 1970-01-01
        • 2017-07-09
        • 1970-01-01
        • 2021-01-02
        • 2021-04-29
        • 1970-01-01
        相关资源
        最近更新 更多