Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确定给定的函数是否为O(n)?_Java_Data Structures_Time_Big O - Fatal编程技术网

Java 如何确定给定的函数是否为O(n)?

Java 如何确定给定的函数是否为O(n)?,java,data-structures,time,big-o,Java,Data Structures,Time,Big O,在我的测试中,我得到了以下问题: 以下哪项是O(n)中的 a)n+lgn b) n+2n c) n+n^2 d) 1000n+4500lgn+54n 我知道O(n)的时间复杂度取决于元素的数量,因此随着元素数量的增加,完成一个操作所需的时间也会增加。根据这种逻辑,a和c的时间复杂度是O(n)吗?考虑O(n)的定义,即对于某些函数f(n)必须有两个正常数,c和k,这样c>0,k,n>=k,以及0=k,考虑O(n)的定义,对于某些函数f(n),必须有两个正常数,c和k,这样c>0,k>0,n>=k,

在我的测试中,我得到了以下问题:

以下哪项是O(n)中的

a)n+lgn
b) n+2n
c) n+n^2
d) 1000n+4500lgn+54n


我知道O(n)的时间复杂度取决于元素的数量,因此随着元素数量的增加,完成一个操作所需的时间也会增加。根据这种逻辑,a和c的时间复杂度是O(n)吗?

考虑O(n)的定义,即对于某些函数f(n)必须有两个正常数,
c
k
,这样
c>0
k
n>=k
,以及
0=k
,考虑O(n)的定义,对于某些函数f(n),必须有两个正常数,
c
k
,这样
c>0
k>0
n>=k
,和
0=k
,这样
0 O(n)表示给定函数的最大时间复杂度为n^1或小于该值,如log(n)等。因此a、b和d可以是O(n)。不是c,因为c包含n^2,所以可以说它是O(n^2)。O(n)表示给定函数的最大时间复杂度为n^1或更小,如log(n)等。所以a、b和d可以是O(n)。不是c,因为c包含n^2,所以可以说它是O(n^2)。
0 <= f(n) <= cn
0 <= n + lg(n) <= cn
0 <= 2 + lg(2) <= c * 2
0 <= 2 + 1 <= 2c
0 <= 3 <= 2c
0 <= 3/2 <= c
0 <= 4 + lg(4) <= c * 4
0 <= 4 + 2 <= 4c
0 <= 6 <= 4c
0 <= 6/4 <= c
0 <= 3/2 <= c    .. take a look at that, it doesn't matter how large n becomes, c is 3/2
0 <= f(n) <= cn
0 <= n + n^2 <= cn
0 <= 2 + 2^2 <= c*2
0 <= 2 + 4 <= 2c
0 <= 6 <= 2c
0 <= 3 <= c   .. so IF this is O(n), c is at least 3
0 <= 4 + 4^2 <= 4c
0 <= 4 + 16 <= 4c
0 <= 20 <= 4c
0 <= 20/4 <= c
0 <= 5 <= c       .. last time c was 3, now its 5 ... as n increases, c is not constant!