【发布时间】:2016-07-13 20:10:47
【问题描述】:
树排序是教科书常用的排序算法之一,将待排序列表中的所有元素插入到一个二叉搜索树中,然后遍历该树以按顺序获取元素。
在任何情况下,树排序优于其他也需要 O(n log n) 时间的排序算法,例如快速排序、归并排序和堆排序?
这似乎不是很有用,因为它总是需要额外的空间来存储树,而其他的可以就地完成。为所有这些树节点分配内存可能也会使其变慢。
【问题讨论】:
-
我对这类问题的一般直觉是,在普通情况下,大多数排序算法都没有意义,但它们可能对 A:您对编程的一般理解或 B:在特别案例。在我的脑海中,树排序很容易修改,让您在执行期间“暂停”排序并添加新项目,这可能会破坏其他流行的功能。 (请注意,这只是可能出现的那种事情的一个例子。)
-
支持 Edward 关于暂停的评论:如果您想重用树,维护树很有用。假设您的元素还没有全部存在。假设您必须显示一个排序列表,其中元素仍然到达。在我们的异步世界中,这根本不是假设场景。有人可能会说这不是排序,而是维护一种支持快速插入的排序数据结构。但这只是语义。
标签: algorithm sorting tree binary-search-tree