Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 什么';堆和失败树在外部排序中的区别是什么?_Sorting_Language Agnostic - Fatal编程技术网

Sorting 什么';堆和失败树在外部排序中的区别是什么?

Sorting 什么';堆和失败树在外部排序中的区别是什么?,sorting,language-agnostic,Sorting,Language Agnostic,我觉得他们非常相似,除了一些概念。在外部排序中,它们的功能基本相同,即在k次运行中查找最小/最大值。那么它们之间有什么显著的区别吗?在大多数情况下,失败者树和堆是非常相似的。然而,有几个重要的区别。失败者树将包含重复节点,因为它提供每个匹配的失败者。因为堆是一个数据存储结构,所以它不会包含这些冗余。二者之间的另一个区别是失败者树必须是一个完整的二叉树(因为它是一种竞赛树),但堆不一定是二叉树 最后,为了理解失败者树的特定质量,考虑以下问题: 假设我们有k个序列,每个序列按非减量顺序排序,它们将以

我觉得他们非常相似,除了一些概念。在外部排序中,它们的功能基本相同,即在k次运行中查找最小/最大值。那么它们之间有什么显著的区别吗?

在大多数情况下,失败者树和堆是非常相似的。然而,有几个重要的区别。失败者树将包含重复节点,因为它提供每个匹配的失败者。因为堆是一个数据存储结构,所以它不会包含这些冗余。二者之间的另一个区别是失败者树必须是一个完整的二叉树(因为它是一种竞赛树),但堆不一定是二叉树

最后,为了理解失败者树的特定质量,考虑以下问题: 假设我们有k个序列,每个序列按非减量顺序排序,它们将以非减量顺序合并为一个序列。这可以通过将具有最小键的元素重复传输到输出数组来实现。必须从k序列的前导元素中找到最小的键。通常,这需要k− 1传输的每个元素的比较。然而,对于loser树,这可以减少到每个元素的log2k比较

资料来源:数据结构和应用手册,Dinesh Mehta