上述算法的平均情况复杂度

时间:2019-07-01 01:55:47

标签: algorithm

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

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。假设n / 2个元素的第一个条件失败,则上述算法的平均情况复杂度


给出了答案

n-(n / 2)-1(如果成功则首先获得的元素数)+ 2 *(n / 2)(如果失败则首先获得的元素数) = 3n / 2 -1

这是正确的吗?但是,如果失败,为什么我们要乘以2?

2 个答案:

答案 0 :(得分:1)

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

考虑该问题的另一种方法是,如果将N加倍,则运行时将精确地翻倍。

答案 1 :(得分:0)

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