Algorithm 输入为O(n logn)时算法的时间复杂度

Algorithm 输入为O(n logn)时算法的时间复杂度,algorithm,time-complexity,Algorithm,Time Complexity,我有一个在O(m)时间内运行的算法。该算法接收一组包含m个条目的数据 通过指定严格的正整数输入n随机生成数据。生成的条目数为O(n log n) 编辑 单独地,生成数据的时间复杂度与n(或O(1))无关,这意味着给定整数n,条目立即随机生成。结果项的数量是随机的,但是是O(n logn)。例如,n=10,则生成的条目数为某个常数乘以10(日志10) 数据是预先生成的。然后,生成的m个条目作为输入输入输入到算法中 问题 然后,我可以假设算法在O(n log n)时间内运行吗?您的问题中存在一些含糊

我有一个在O(m)时间内运行的算法。该算法接收一组包含m个条目的数据

通过指定严格的正整数输入n随机生成数据。生成的条目数为O(n log n)

编辑

单独地,生成数据的时间复杂度与n(或O(1))无关,这意味着给定整数n,条目立即随机生成。结果项的数量是随机的,但是是O(n logn)。例如,n=10,则生成的条目数为某个常数乘以10(日志10)

数据是预先生成的。然后,生成的m个条目作为输入输入输入到算法中

问题


然后,我可以假设算法在O(n log n)时间内运行吗?

您的问题中存在一些含糊不清的地方,这些含糊不清的地方要么是为了帮助您将输入大小和运行时复杂性之间的关系内在化,要么是由于错误通信而导致的

因此,尽我所能最好地解释这个场景:


您的算法复杂性
O(m)
与m成线性关系

因此,由于
我们假设生成数据独立于输入。i、 e.O(1)。
,您的时间复杂度仅取决于您指定生成条目的某些
n

是的,你可以说该算法在
O(nlogn)
时间内运行,因为它对size
m
的输入没有任何作用


回答您的最新问题:

这仍然很难理解,因为有些关键词指的是不同的东西。但总的来说,我认为这就是你的意思:

  • 您有一个数据集作为输入,即大小O(n logn),给定一些特定的n
  • 此数据集仅用作输入,它是预先生成的,或者使用在O(1)时间内运行的某个黑箱生成的,而不管黑箱的n值是多少。(我们对这个问题的黑盒不感兴趣)
  • 然后将该数据集提供给我们实际感兴趣分析的算法
  • 对于大小为m的输入,该算法的时间复杂度为O(m)
  • 由于您的输入相对于n具有大小O(n logn),因此扩展后,您的O(m)线性时间算法相对于n具有时间复杂度O(n logn)

看看区别:假设你的算法不是线性的,而是二次的O(m^2),那么它的时间复杂度O(n^2 log^2 n)相对于n.

假设n log n=m,那么为什么不呢?传统上说,大O符号中的
n
表示输入的大小-因此,如果您的算法在输入的大小上是线性的,那么它就是
O(n)
。然而,这通常是宽松的(一个常见的例子是我们使用
O(E+V)
的图形,而不是
n
作为输入的大小,而是这个输入的一些属性)<代码>生成的条目数为O(n log n)。我们假设生成数据独立于输入。i、 e.O(1)。@axiom是的,那部分让我很烦恼;我看到的解决不一致性的唯一方法是,如果算法只是丢弃大小为m的输入,而只是基于整数输入n生成随机条目。感谢您的回答+1。对不起,是我的错。我编辑了这个问题,希望能解决这个模棱两可的问题。将在一段时间内接受您的答案。非常感谢更新您的答案。这正是我想说的。