嗨,我是Java课程的学生,我们只介绍了Big-O符号。
我了解Big-O的一般情况,这种情况在最坏的情况下发生,然后它计算了代码的效率,并且我了解了每个进程的一般运行时。我可以说下面的代码的运行时为O(n ^ 2)。
我遇到的麻烦是计算多项式。现在,我只看一个代码片段并了解其效率,但是我不知道该片段的f(x)或其引用函数(g(x))。
在下面的代码中找到f(x)和g(x)可以得到帮助吗? (仅需要找到答案的过程,不需要确切的答案)
链接到涉及该主题的文档或视频也将有所帮助。谢谢!
public static int num_occurrences(int n)
{
int count = 0;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
if ( i == j )
continue;
if (strings[i] == strings[j])
count++;
}
}
return count;
}
答案 0 :(得分:0)
对于import socket
ip_list = []
for info in socket.getaddrinfo('reddit.com', 80):
ip_list.append(info[-1][0])
的每个值,内部循环正好运行i
次。
当n
时,i=0
当j = 0,1,....,n-1 (n times)
,i=1
.......等等
因此,步骤总数为:
j = 0,1,....,n-1 (n times)
= n + n + n + n + n+ ......+ n
= n*n
因此运行时将为n^2
您可能想看看Time complexity of nested for-loop
编辑:
O(n^2)
我们有for(int i = 0; i < n; i++) //<---- cost A*n^2 time
{
for(int j = 0; j < n; j++)
{
if ( i == j )
continue;
if (strings[i] == strings[j])
count++;
}
}
return count; //<---- cost constant time
嵌套f(x) = Ax^2 + C
操作将花费loop
,而Ax^2
语句也将花费一定的时间,例如return