【问题标题】:Tree Sort Performance树排序性能
【发布时间】:2021-05-07 04:53:40
【问题描述】:

我有一个 AVL 树实现,其中插入方法在 O(log n) 时间内运行,而返回有序列表表示的方法在 O(n^2) 时间内运行。如果我有一个需要排序的列表。通过使用 for 循环,我可以遍历列表并将每个元素插入到 AVL 树中,这将在 O(n log n) 时间组合中运行。那么整个排序算法的性能如何(即遍历列表,插入每个元素,然后使用中序遍历返回排序后的列表)?

【问题讨论】:

    标签: performance sorting data-structures avl-tree


    【解决方案1】:

    你说得对,向树中添加 n 个元素需要时间 O(nlog(n))。 BST 的简单有序遍历可以在 O(n) 时间内执行。因此,有可能在 O(nlog(n) + n) = O(nlog(n)) 时间内获得元素的排序列表。如果从树中生成排序列表的算法的时间复杂度是二次的(即在 O(n^2) 中但并不总是在 O(n) 中),那么您描述的过程的最坏情况时间复杂度在 O(nlog (n) + n^2) = O(n^2),这不是最优的。

    【讨论】:

      猜你喜欢
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      • 1970-01-01
      相关资源
      最近更新 更多