我在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;
}
答案 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)。