下面的算法比较两个字符串,如果它们相同则返回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();
}
答案 0 :(得分:1)
是的,是O(n)。
@LouisWasserman:如果我使用compareStrings方法的合并排序算法,如果只有1个字符串要比较,最好的情况是(log n)时间吗?我知道合并排序的最坏情况是O(n log n)
你正在处理两个不同的n:一个是字符串的长度,另一个是你要排序的字符串数。如果您要排序的字符串长度为m,那么合并排序整体将花费O(nm log n)时间。 - Louis Wasserman