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)。我不确定这是不是真的,你能再帮我一次吗