我有一个在O(m)时间内运行的算法。该算法接收一组包含m个条目的数据。
通过指定严格正整数输入n来随机生成数据。生成的条目数为O(n log n)。
修改
单独地,生成数据的时间复杂度独立于n(或O(1)),这意味着给定整数n,条目被立即且随机地生成。结果条目的数量是随机的,但是是O(n log n)。例如。 n = 10,然后生成的条目数是一些常数10(log 10)。
数据是手工生成的。然后将得到的m个条目作为输入馈入算法。
问题
我可以假设算法在O(n log n)时间内运行吗?
答案 0 :(得分:2)
您的问题中存在一些含糊不清的问题,这些含糊不清是为了帮助您内化输入大小和运行时间复杂性之间的关系,或者是由于错误传达导致的简单。
尽我所能解释这种情况:
您的算法复杂度O(m)
相对于m 呈线性。
因此,自We assume that generating the data is independent of input. i.e. O(1).
起,您的时间复杂度仅取决于您指定的生成条目的某些n
。
所以是的,您可以说算法在O(n log n)
时间运行,因为它对大小为m
的输入没有任何作用。
回复您的最新问题:
由于一些关键词指的是不同的东西,因此仍然难以理解。但总的来说,我认为这就是你所得到的:
要看到差异:假设你的算法不是线性的,而是二次O(m ^ 2),那么相对于n,它将具有时间复杂度O(n ^ 2 log ^ 2 n)。