微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

树排序性能

如何解决树排序性能

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

解决方法

您正确地说向树添加 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),这不是最优的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。