锦标赛树(Winner Tree)可以提供哪些帮助?

时间:2018-02-13 12:46:48

标签: c++ merge binary-tree heap min-heap

在锦标赛树的实现中,使用额外的空间作为要比较的数据在树的叶子处设置然后进行比较。我读到当我们必须合并k个排序的数组时它是有用的。现在,让我们假设我们想合并k个排序的数组。如果不是存储实际值,而是存储索引并创建最小堆,然后在min_heap实现中使用自定义比较器函数,该函数按该索引处的值排序。通过这个我们可以知道要添加到堆中的下一个元素。这不是更好的实施,因为它可以节省一半的空间吗?而且,时间复杂性也是一样的。上述实现不是比锦标赛树方法更好吗?
那么,锦标赛树可以提供哪些帮助呢?

1 个答案:

答案 0 :(得分:1)

锦标赛树对于tournament sort非常有用,https://datachant.com/2016/06/27/cursor-based-pagination-power-query/通常用于N路合并,有时用于外部排序。锦标赛排序被认为是heapsort的变种。

另一个应用程序是查找多个已排序数组的中位数,或查找列表中的顶部(或底部)k项。

锦标赛树不是二进制堆的替代品,而是二进制堆的特定用途。