【问题标题】:What is tree sort useful for?树排序有什么用?
【发布时间】:2016-07-13 20:10:47
【问题描述】:

树排序是教科书常用的排序算法之一,将待排序列表中的所有元素插入到一个二叉搜索树中,然后遍历该树以按顺序获取元素。

在任何情况下,树排序优于其他也需要 O(n log n) 时间的排序算法,例如快速排序、归并排序和堆排序?

这似乎不是很有用,因为它总是需要额外的空间来存储树,而其他的可以就地完成。为所有这些树节点分配内存可能也会使其变慢。

【问题讨论】:

  • 我对这类问题的一般直觉是,在普通情况下,大多数排序算法都没有意义,但它们可能对 A:您对编程的一般理解或 B:在特别案例。在我的脑海中,树排序很容易修改,让您在执行期间“暂停”排序并添加新项目,这可能会破坏其他流行的功能。 (请注意,这只是可能出现的那种事情的一个例子。)
  • 支持 Edward 关于暂停的评论:如果您想重用树,维护树很有用。假设您的元素还没有全部存在。假设您必须显示一个排序列表,其中元素仍然到达。在我们的异步世界中,这根本不是假设场景。有人可能会说这不是排序,而是维护一种支持快速插入的排序数据结构。但这只是语义。

标签: algorithm sorting tree binary-search-tree


【解决方案1】:

我能想到的一种情况是外部排序

例如,在外部排序的情况下,如果你有 List if k list of n 元素总KN个元素。

考虑一个场景,你不能一次将所有元素都存储在内存中,就像在 ram 的情况下,我们不能一次将每个元素都放在 ram 中

在那个场景中堆排序或树排序很有用 我们从每个 n 列表中保留一个元素所以我们的堆大小为 K 我们可以通过从堆中取出最小或最大元素来对其进行排序

更多信息 - 检查外部排序

【讨论】:

    猜你喜欢
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 2010-09-21
    相关资源
    最近更新 更多