时间复杂度最大值

时间:2014-08-26 10:51:18

标签: performance algorithm time divide-and-conquer

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

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元素的第一个if条件失败 2.如果第一个ccondition失败1/2倍plz xplain,则上述算法的平均复杂度

1 个答案:

答案 0 :(得分:0)

两种情况的平均案例复杂度为O(n)。如果k是第一个if失败的次数,那么比较次数是2 * n - 2 - k。

maxmin(a,n,max,min){
   max=min=a[1];
   for i=2 to n do{ // goes through the loop n-1 times
      if a[i]>max then max:=a[i]; // out of n-1 times succeeds k times and fails n-1-k times
      else if a[i]<min then min:=a[i]; // runs this n-1-k times
   }
}

n-1 + n-1-k - &gt; 2 * n - 2 - k