JAVA:BigO 算法 - equalsIgnoreCase 和 CompareTo

标签 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 算法吗?或者它只是用于循环和数组?这些合适吗?

最佳答案

您的问题有点令人困惑,因为段代码都具有时间和空间复杂性。根据定义,代码会占用一定的时间,而该代码的数据会占用一定的空间(即使该时间/空间为零)。

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

对于第四个,字符串赋值,这是一个引用副本,它是O(1)

但是,第三个不是O(N),因为实际上不涉及N。无论 stateVotes 的大小如何,它都正好迭代四次,因此应该是 O(1)

关于JAVA:BigO 算法 - equalsIgnoreCase 和 CompareTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41176387/

相关文章:

java - 如何保持字符串缓冲区恒定

java - 同机 JVM 之间最快的通信

algorithm - 有没有更好的方法来查找搜索引擎代码的集合交集?

java - 一个测试用例的更新位错误

database - 键值对的算法,其中键是字符串

python - O(log n) 的时间复杂度嵌套在另一个 O(log n) 循环中

algorithm - 对数函数的下界

java - 使用数组值将 jsonarray 数据拆分为多个列表

java - JDBC 天生不安全?

java - 这是 O(N) 表示法中需要常量的情况吗?