【问题标题】:why cant we divide an array say 5 times in a merge sort?为什么我们不能在合并排序中将一个数组划分为 5 次?
【发布时间】:2012-03-13 15:57:02
【问题描述】:

在归并排序中,我们总是将数组划分两次。为什么我们不把它分成两次以上??堆排序和归并排序哪个更好?我

【问题讨论】:

    标签: sorting merge


    【解决方案1】:

    为什么不试试看。编写一个拆分为 5 块而不是 2 块的归并排序,并测试其性能。最好的学习方法是尝试。

    它对计算复杂度没有影响,所以改进最多是一个常数因素。您将合并通道的数量减少了 lg(5) ≈ 2.3 倍,但合并步骤现在需要一个优先级队列,这将比两阶段合并使用的单一比较慢 2.3 倍以上。

    分成2个以上的部分称为polyphase merge sort,当您需要尽量减少合并通道数时使用。

    【讨论】:

    • 谢谢 :) 我只是想看看在增加 d 分割数时出现的所有权衡。 :)
    • no effect on computational complexity渐近复杂度没有影响。 Dividing into more than 2 pieces is known as polyphase merge sort multi-way merge
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多