当前位置: 首页 > 知识库问答 >
问题:

两个反向排序数组的TIme复杂度

章增
2023-03-14

两个反向数组合并成一个排序数组的时间复杂度是多少?

是O(n)还是O(log n)?

共有1个答案

司徒隐水
2023-03-14

如果两个给定的数组都是相反的排序顺序,则为 O(m n)(m - 长度为 1。 数组,n - 长度为 2. 数组),因为您需要线性遍历两个数组。

但是如果数组没有排序,你有两个选择:

  1. 对它们进行排序并在排序后合并它们O(nlognmlogm)
  2. 连接数组并对连接数组进行排序O(nlognmlogm)
 类似资料:
  • 在研究合并k个排序的连续数组/向量的问题以及它在实现上与合并k个排序的链表有何不同时,我发现了两个相对简单的用于合并k个连续数组的朴素解决方案和一个基于成对合并的很好的优化方法,该方法模拟了mergeSort()的工作原理。我实现的两个朴素解决方案似乎具有相同的复杂性,但在我进行的一个大型随机测试中,似乎一个比另一个效率更低。 我天真的合并方法如下所示。我们创建一个输出向量 我的第二个天真解决方案

  • 似乎Lodash的sortedIndex期望一个前向排序数组来进行二进制搜索。(例如)

  • 下面是链接:array reversed() 在讨论部分的最后,它说复杂性O(1),我相信这是关于时间复杂性的,如何反转一个数组需要O(1)时间?

  • 考虑一个已经按降序排序的数组A[n]。堆已经生成。现在考虑一下我们将[1](数组索引从1开始)与[heap.size]交换的循环。以下是伪代码: 我们在元素1上调用Max-Heapify以通过允许它向下浮动到适当的位置来恢复堆属性。我们知道Max-Heapify将花费clg(n)时间。那么,循环不是应该花费c(lg(n)lg(n-1)... lg(1))=Theta(log(n))时间而不是jut

  • 问题: 我必须分析时间复杂度来对几乎已排序的整数值列表进行排序(使用快速排序)。 我做了什么? 我读过SO Q1、SO Q2、SO Q3和这一本。 但是,我没有发现任何明确提到使用快速排序对k排序数组进行排序的时间复杂度的内容。 由于快速排序算法的时间复杂度取决于选择数据透视的策略,并且由于几乎排序了数据,因此有可能面临最坏情况,为了避免最坏情况,我使用了三个值(第一、中间、最后)的中位数作为这里

  • 问题内容: 给定两个排序数组,如下所示: 我希望输出为: 要么: 我知道我可以执行以下操作: 我只是想知道是否有一种更快的方法,因为我要处理的数组具有数百万个元素。 任何想法都欢迎。谢谢 问题答案: 由于您使用numpy,因此我怀疑bisec根本不会对您有所帮助。因此,我建议您做两件事: 千万 不能 使用,使用方法,而不是这种种取代阵列,避免了复制。 必须使用没有到位的。因此,不要手动使用逻辑。I