外部排序归并时,使用败者树还是最小堆?

发布于 2022-08-26 19:22:17 字数 725 浏览 16 评论 0

背景

外部排序的介绍,参考资料:外部排序wiki介绍

实际上,中文wiki上的介绍中,直接使用了最小堆来做排序后的多个子文件的归并,以得到最终的排序序列。而在我看到的很多网上资料上,却是介绍使用败者树,比如如下链接: 链接1链接2链接3

我的理解

按照我的理解,最小堆实现和败者树实现理应在时间复杂度和空间复杂上差不多(虽然败者树需要额2k的空间,而最小堆本身只需要k的空间,但最小堆每个元素被取出后,还需要确定是从哪个顺串中补充元素,故也需要增加额外的空间标记堆中元素所在的顺串),这两者有什么区别呢,或者如何选择?

PS

实际上,我在网上查阅败者树的资料时,并没有找到英文资料-,-,让我很费解。请大家赐教~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情场扛把子 2022-09-02 19:22:17

首先感谢楼主给出的连接,学到不少,但我的理解跟你的理解不太一样,外排序分成两部分来实现的,第一部分是将一个大文件分成几个有序的小文件,第二部分是将几个有序的小文件合成一个大的有序文件,维基百科上说的是用最小堆实现的选择置换法来优化第一部分的排序,而其他链接中给的败者树是用来优化第二部分的。你给的第二个链接,我感觉讲的非常到位。仔细阅读下。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文