大O:比较字符串的O(n)

时间:2016-02-17 01:47:19

标签: java compare big-o time-complexity

下面的算法比较两个字符串,如果它们相同则返回0,否则返回0.

for循环后的运行时间O(n)是否取决于n,两个字符串的最小长度?

int compareStrings(String s1, String s2) {
    int n = min(s1.length(), s2.length());
        for (int i=0; i<n; i++) {
        if (s1.charAt(i) != s2.charAt(i)) {
            return s1.charAt(i) – s2.charAt(i);
        }
    }
    return s1.length() – s2.length();
}

1 个答案:

答案 0 :(得分:1)

是的,是O(n)。

@LouisWasserman:如果我使用compareStrings方法的合并排序算法,如果只有1个字符串要比较,最好的情况是(log n)时间吗?我知道合并排序的最坏情况是O(n log n)

你正在处理两个不同的n:一个是字符串的长度,另一个是你要排序的字符串数。如果您要排序的字符串长度为m,那么合并排序整体将花费O(nm log n)时间。 - Louis Wasserman