Time complexity T(n)=n/x次线性,单位为n$?

Time complexity T(n)=n/x次线性,单位为n$?,time-complexity,Time Complexity,我知道次线性时间算法用o(n)表示 对于正数x,T(n)=n/x次线性是否为n$ 换句话说,n/x=o(n)吗 T(n)=n/x是线性的,就像T(n)=xn是线性的一样。如果你的函数只是乘以某个常数,那么它是线性的。在这种特殊情况下,c=1/x 您也可以使用检查 形式上,f(n)=o(g(n))作为n→ ∞ 意味着 每个正常数ε都存在一个常数N,使得| f(N)|=N 在这种情况下,选择ε=1/2x,您将无法找到一个N,以满足条件,使N/x=o(N) 直观地说,如果且仅当f(n)最终被g(n)控

我知道次线性时间算法用o(n)表示

对于正数x,T(n)=n/x次线性是否为n$

换句话说,n/x=o(n)吗

T(n)=n/x
是线性的,就像
T(n)=xn
是线性的一样。如果你的函数只是乘以某个常数,那么它是线性的。在这种特殊情况下,
c=1/x

您也可以使用检查

形式上,f(n)=o(g(n))作为n→ ∞ 意味着 每个正常数ε都存在一个常数N,使得| f(N)|=N

在这种情况下,选择
ε=1/2x
,您将无法找到一个
N
,以满足条件,使
N/x=o(N)


直观地说,如果且仅当
f(n)
最终被
g(n)
控制,即使你“减慢g(n)”乘以一个非常小的常数。

这取决于x的值,如果x接近n,那么它可能是o(1)。@Atul Kumar我们在这里讨论的是渐近行为。x是一个常数,所以它不能“接近n”,因为n趋于无穷大。在渐近行为中,你需要检查你的常数,因为常数不应该很大@对不起,我不明白你最后的评论。无论如何,我的观点是,这并不取决于x的值@AtulKumarCan常数c是有理数吗?是的,c可以是任何实数。如果您的函数应该表示执行时间,那么c的负值将毫无意义,但任何正实数都是有效的。具体例子:考虑一个数组中的问题:给定一个数组<代码>一个排序值的< /代码>,以及一个值<代码> x>代码>,判断是否<代码> x <代码>在A之上。你可以通过遍历数组的一半<代码> <代码>来解决这个问题,所以如果<代码> a < />代码> <代码> n>代码>元素,你可以在代码> t(n)=n/ 2 中解决这个问题。此算法仍然是线性的,如果将
A
的大小加倍,则需要花费两倍的时间来解决问题。您可以使用时间
T(n)=log(n)
中的二进制搜索来解决相同的问题,这将是一个真正的次线性解决方案(将
A
的大小加倍,并且不会花费两倍的时间)。