У меня есть этот код:
public static int compare(String s1, String s2) {
int n = Math.min(s1.length(), s2.length());
for (int i = 0; i < n; i++) {
char c1 = s1.charAt(i);
char c2 = s2.charAt(i);
int diff = c1 - c2;
if (diff != 0) {
return diff;
}
}
return s1.length() - s2.length();
}
public static boolean exists(String word, String[] dict) {
int left = 0;
int right = dict.length-1;
while (left <= right) {
int middle = (left + right) / 2;
int comparison = compare(dict[middle], word);
if (comparison < 0) {
left = middle+1;
}
else if (comparison > 0) {
right = middle-1;
} else {
return true;
}
}
return false;
}
Мне нужно вычислить сложность существующей функции.
Я сказал, что это O (K * logN), а N - это количество элементов в массив, а K - количество букв в слове.
Ответ O (logN), значит, я не должен был включать compare
сложность функции в мои вычисления?