Big o 我需要帮助来计算;“大O”;
第一个问题Big o 我需要帮助来计算;“大O”;,big-o,Big O,第一个问题 sum = 0; for i = 1 to n; i++ { for j = 1 to i * i; j++ { for k = 1 to j; k++ sum ++; } } 和 第二个问题 sum = 0; for i = 1 to n { for j = 1 to i * i { if j mod i == 0 { for k = 1 to j
sum = 0;
for i = 1 to n; i++
{
for j = 1 to i * i; j++
{
for k = 1 to j; k++
sum ++;
}
}
和
第二个问题
sum = 0;
for i = 1 to n
{
for j = 1 to i * i
{
if j mod i == 0
{
for k = 1 to j
sum ++;
}
}
}
嗨,我是IT新手,我需要帮助(实际上是2:D)
几天前我遇到了“大o”,当我研究它的时候,我找到了这个地址,实际上我从这里学到了很多东西
但是大多数关于“大o”的例子只是为了解释它,这里我有两个问题。经过计算,我发现第一个的大o为o(n^5),第二个为o(n^3)。但是这些价值太大了
所以我在这里,我需要你的帮助。。。(即使你可以写下任何结果,而无需解释,但请帮助我回答这些问题)
谢谢你的进步…好的,大O的定义是,如果g(x)的话,函数g(x)就是O(f(x))≤ 某些常数k的kf(x) 换句话说,big-O告诉你函数增长的速度;如果它是$O(n)*,则它与输入的长度成正比。计算的内容和计算的细节都隐藏在常数中 以下是一些例子:
for i from 1 to n {
do something
}
是O(n)。每项检查n个项目一次
for i from 1 to n {
}
for i from 1 to n {
}
顺序中的两次仍然是O(n),因为您要查看n个项目中的每一项两次。这是2n,仍然是O(n)
另一方面,
for i from 1 to n {
for j from 1 to n {
}
}
是O(n2),因为对于i的每一步,j都要经过1-n
理顺代码的缩进,让我们确定您在做什么,看看这些示例是否有用
更新
想想看,这些问题都很有趣
术语i*i
i*i
的值,即i2。在最坏的情况下,i==n,因此j是1,4,9,16…(n*n)
。从1到n,x的x2之和是多少?(提示:1/6(…)(…),现在您填写空格。)
- 如果。。。mod术语
这个词什么时候才是真的?你能修好缩进或添加大括号,这样我们就知道哪些循环在哪里结束了吗?非常感谢你的回答,但让我困惑的是;第二个问题的“如果”条件和第一个问题的“i*i”情况,这些想法如何影响“大o”非常感谢你在经过更多计算后的回答,我改变了主意,第一个情况为o(n^7),第二个情况为o(n^3)。我不确定这是不是真的,你能再帮我一次吗