代码之家  ›  专栏  ›  技术社区  ›  cnmesr

说明此伪代码计算的内容并确定其运行时

  •  0
  • cnmesr  · 技术社区  · 7 年前

    这样的问题可以在我即将写的考试中提出。我在一本书中发现了这一点,但遗憾的是,没有解决办法。所以我解决了它,我希望你能告诉我我做得是否正确?

    b、 )分析算法的运行时间 n

         Input: Array A of length |A|=n with n >= 2
         Output: Number x
          x := 0;
          for i := 1 to n do
             for j := i+1 to n do
               if x < |A[i] - A[j]| then
                  x := |A[i] - A[j]|;
               end if
             end for
          end for
          return x;
    

    https://gist.github.com/anonymous/b27877536f3c9f553500388af78ee962 )

    b、 )我不确定这是如何正确完成的,但我肯定也尝试过:

         Input: Array A of length |A|=n with n >= 2     O(1)
         Output: Number x
          x := 0;                                       O(1)
          for i := 1 to n do                            O(n)
             for j := i+1 to n do                      *O(n)
               if x < |A[i] - A[j]| then               *O(1)
                  x := |A[i] - A[j]|;                  *O(1)
               end if                                  *O(1)
             end for                                   *O(1)
          end for                                      *O(1)
          return x;                                     O(1)
                                                      = O(n*n) = O(n^2)
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Kh.Taheri    7 年前

    你的答案是正确的 A部分 |A[i] - A[j]| 绝对值 阶乘的 .例如: |1-3| = 2

    在里面 B部分 ,你是对的,它是O(n^2),它被称为二次型,你可以找到更多的信息 here .