【问题标题】:Big O analysis. Largest integer in the array of non-negative [closed]大 O 分析。非负数组中的最大整数
【发布时间】:2012-11-09 18:54:07
【问题描述】:

尝试进行大 O 分析- 这个程序的平均情况是多少? O(n/2(n/2)) = O(n^2) ?..

 /* Returns the largest integer in the array */
 int CompareToAll(int array[], int n)
 {

   int  i, j;
   bool isMax;/* Make sure that there is at least one element in the array.*/                        

   if (n <= 0) return -1;

   for (i = n-1; i > 0; i--) 
   {
      isMax = true;
      for (j = 0; j < n; j++) {

        /* See if any value is greater.*/
         if (array[j] > array[i]){
             isMax = false;  /* array[i] is not the largest value. */
             break;
          }
      } /* If isMax is true, no larger valueexists; array[i] is max. */

      if (isMax)
        break;
   }
   return array[i];
}

谢谢

【问题讨论】:

    标签: c# c arrays algorithm


    【解决方案1】:

    是的,假设元素是随机选择的,平均为 O(n2)。在最坏的情况下,您将每个元素与其他元素进行比较。

    这个算法不是最优的。使用简单的 O(n) 算法可以找到数组中的最大元素:迭代数组一次,同时跟踪目前看到的最大元素。

    【讨论】:

    • 您好,感谢您的回复-是的,我知道该程序的 O(N) 算法。
    猜你喜欢
    • 2019-11-23
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 2020-02-04
    相关资源
    最近更新 更多