【发布时间】:2018-06-14 21:39:04
【问题描述】:
这是我在数据结构考试中遇到的以下练习题。我们想从两组大小为 n 的数字 A 和 B 中得到有序的整数序列。
- A 和 B 被组织成未排序的数组。
- A 和 B 被组织成数组,其中只有第一个被排序。
- A 和 B 被组织成 AVL 树。
在每种情况下,我都希望将结果存储在另一个大小为 2*n 的数组 C 中。
对于第一种情况,我认为只需将所有元素复制到第二个数组中,这将花费 O(2n),然后使用快速排序将它们全部排序在一起,这将花费 O(2nlog2n)。
对于第二种情况,有没有更快的方法,还是我应该像以前一样将它们全部复制和排序?
我也不知道如何处理第三种情况。
【问题讨论】:
-
对于第二种情况,你不能对数组B进行排序,它是nlogn时间内未排序的数组,然后对其应用合并两个排序的数组A和B算法。对于第三种情况,只需在树上应用树遍历并将数组的元素继续存储在列表中,然后对列表进行排序。
-
所以对于第三种情况应用顺序树遍历第一棵树并复制到一个数组并应用顺序树遍历第二棵树并复制到另一个数组然后合并两个排序数组A B. 听起来对吗??
-
这听起来很对,没错。总时间复杂度将在一天结束时为 O(n)。
标签: arrays sorting data-structures time-complexity avl-tree