【问题标题】:Average case complexity of the above algo上述算法的平均案例复杂度
【发布时间】:2019-11-11 17:36:12
【问题描述】:

简单的线性搜索找到最大最小值算法

maxmin(a,n,max,min)
{
   max=min=a[1];
   for i=2 to n do
   {
     if a[i]>max then
         max:=a[i]; 
     else if a[i]<min then 
         min:=a[i];
    }
}

1. 考虑到第一个 if 条件对于 n/2 个元素失败,上述算法的平均案例复杂度


给出的答案

n-(n/2)-1(第一个成功的元素个数)+ 2 * (n/2)(第一个失败的元素个数) = 3n/2 -1

正确吗??但是失败时,为什么我们要乘以 2??

【问题讨论】:

    标签: algorithm


    【解决方案1】:

    这是 O(n)。 if 语句和可能的赋值是 O(1),因此它们不会影响大 O 分类(尽管它们肯定会在一定程度上影响运行时)。

    另一种考虑这个问题的方法是,如果你把 N 加倍,运行时间几乎会加倍。

    【讨论】:

    • O(3n/2)-1 是 O(n)-1 是 O(n)。 O 表示以 n 为尺度的 / 数量级的性能。将 n 乘以常数不会改变缩放特性。从 O(n) 中减去一个常数也不会改变缩放特性(当 N 非常大时,-1 将是无穷小)。
    【解决方案2】:

    线性搜索是最坏的情况,O(n),最好的情况是 O(1)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      相关资源
      最近更新 更多