这个简单算法的计算复杂性

时间:2013-01-09 10:43:15

标签: java algorithm complexity-theory

我在java中计算了这个算法的最佳案例复杂度,平均值和最差值,我想如果在最坏的情况下好O (1)O (n),但我不知道是否平均!你能帮我解决一下吗?谢谢!

public boolean searchFalse(boolean[] b){ 
 boolean trovato=false; 
  for(int i=0;i<b.length;i++){
   if(b[i]==false){
 trovato=true;
 break;
   }
  }return trovato;
}

5 个答案:

答案 0 :(得分:6)

我无法抗拒重写它

public boolean searchFalse(boolean[] bs){
    for (boolean b : bs) if(!b) return true;
    return false;
}

在第一个元素可能为O(1)之后停止。

如果所有布尔值都是随机的,则平均搜索时间为O(1),因为平均执行2次搜索,或者如果在随机位置通常有一个假值,则平均值为O(N)

如果必须一直搜索,最坏的情况是O(N)

简而言之O(N / 2)= O(N)

答案 1 :(得分:1)

算法的复杂性为 O(N)

如果你需要平均迭代次数,它将是(1/1 + 1/2 + 1/4 + .. + 1 / N)=( 2 - 1 / N )迭代预期如果数组有随机布尔值。

答案 2 :(得分:0)

平均情况也是O(n)

答案 3 :(得分:0)

平均情况是O(n)是最坏的情况,因为它的数组迭代。

答案 4 :(得分:0)

因为这是BOOLEAN数组,我的平均复杂度将是常数O(1.5),最差O(n)。