BigO算法适用于:
//O(N)
public boolean isSameName(Candidate otherCan) {
return this.name.equalsIgnoreCase(otherCan.getName());
}
和
//O(N)
public int compareTo(Candidate otherCan) {
return this.name.compareToIgnoreCase(otherCan.getName());
}
和
//O(N)
public int getTotalVotes() {
int t = 0;
for(int i = 0; i < 4; i++) {
t += stateVotes[i];
}
return t;
}
和
//O(1)
public Candidate(String name) {
this.name = name;
}
你可以为这些算法设置BigO算法,还是仅用于循环和数组?那些合适吗?
答案 0 :(得分:1)
你的问题是小令人困惑,因为每个代码都有时间和空间的复杂性。根据定义,代码需要一些时间,并且该代码的数据会占用一定的空间(即使该时间/空间为零)。
就细节而言,前两个是O(N)
是否取决于Java中的底层代码,但它可能是正确的。
对于第四个字符串赋值,这是一个O(1)
的参考副本。
然而,第三个是不 O(N)
,因为实际上没有涉及N
。无论stateVotes
的大小如何,它都会四次迭代,因此应该是O(1)
。