我已编写此代码,但我必须找到大O符号。我想出了O(n2),但我不确定它是否正确。请有人帮忙。感谢
int n = array.length;
for(int i=0;i<array.length;i++){
int c = 1;
for(int j=i+1;j<array.length;j++)
if (array[i]==array[j])
c=c+1;
if (c>(array.length/2)){
return array[i];
}
}
return 0;
}
答案 0 :(得分:0)
答案 1 :(得分:0)
你是对的,这是一个O(n ^ 2)操作,因为你做的操作数与输入数组中数据元素数的平方成正比。
如果匹配数超过数组长度的一半,你有一个“救助”条件的事实也不会改变操作的基数,它仍然是一个N平方的操作,因为这是限制行为功能。
您可以通过蒙特卡罗模拟验证这一点: