【发布时间】:2011-05-14 01:59:17
【问题描述】:
谁能解释一下这句话吗?
排序算法是经过修改的 合并排序(其中合并是 如果中的最高元素省略 低子列表小于最低 高子列表中的元素)。
我知道 Merge 的工作原理,但我仍然不太了解。 谢谢。
【问题讨论】:
谁能解释一下这句话吗?
排序算法是经过修改的 合并排序(其中合并是 如果中的最高元素省略 低子列表小于最低 高子列表中的元素)。
我知道 Merge 的工作原理,但我仍然不太了解。 谢谢。
【问题讨论】:
Mergesort 递归地合并排序的子列表。如果当前符合合并条件的子列表不包含重叠元素,则无需合并它们。合并操作将被跳过。
例子:
List A
1 4 8 9
List B
10 12 14 19
没有必要通过比较这些列表的过程,因为 9 是 A 的最大元素,而 10(B 的第一个元素)大于 A 的最大元素。结果将只是 A 的串联和 B。
所有文件都在说,如果不需要综合处理,他们会走捷径。
【讨论】:
假设您正在进行合并排序,并且即将合并您的两个已排序子列表[1, 3, 4] 和[2, 5, 6]。然后你必须运行你的合并算法,将两半交错成整个[1, 2, 3, 4, 5, 6]。
[1] + [2] + [3, 4] + [5, 6] = [1, 2, 3, 4, 5, 6]
但是,假设在您对两半进行排序之后,您有 [1, 2, 3] 和 [4, 5, 6]。低子列表 (3) 中的最高元素小于高子列表 (4) 中的最低元素。无需合并两个子列表;您可以简单地将它们连接在一起。
[1, 2, 3] + [4, 5, 6] = [1, 2, 3, 4, 5, 6]
【讨论】: