JAVA:BigO算法 - equalsIgnoreCase和CompareTo

时间:2016-12-16 02:28:55

标签: java algorithm big-o

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算法,还是仅用于循环和数组?那些合适吗?

1 个答案:

答案 0 :(得分:1)

你的问题是令人困惑,因为每个代码都有时间和空间的复杂性。根据定义,代码需要一些时间,并且该代码的数据会占用一定的空间(即使该时间/空间为零)。

就细节而言,前两个是O(N)是否取决于Java中的底层代码,但它可能是正确的。

对于第四个字符串赋值,这是一个O(1)的参考副本。

然而,第三个是 O(N),因为实际上没有涉及N。无论stateVotes的大小如何,它都会四次迭代,因此应该是O(1)