【发布时间】:2012-03-13 15:57:02
【问题描述】:
在归并排序中,我们总是将数组划分两次。为什么我们不把它分成两次以上??堆排序和归并排序哪个更好?我
【问题讨论】:
在归并排序中,我们总是将数组划分两次。为什么我们不把它分成两次以上??堆排序和归并排序哪个更好?我
【问题讨论】:
为什么不试试看。编写一个拆分为 5 块而不是 2 块的归并排序,并测试其性能。最好的学习方法是尝试。
它对计算复杂度没有影响,所以改进最多是一个常数因素。您将合并通道的数量减少了 lg(5) ≈ 2.3 倍,但合并步骤现在需要一个优先级队列,这将比两阶段合并使用的单一比较慢 2.3 倍以上。
分成2个以上的部分称为polyphase merge sort,当您需要尽量减少合并通道数时使用。
【讨论】:
no effect on computational complexity 对渐近复杂度没有影响。 Dividing into more than 2 pieces is known as polyphase merge sort multi-way merge