Подсчитать количество сравнений в алгоритме бинарного поиска - C#
Формулировка задачи:
Здравствуйте, у меня есть массив слов words в котором мы будем находить необходимые слова, с помощью массива wordsForFind, слова нужно находить с помощью бинарного поиска, вот что реализовано: сам метод бинарного поиска для слов
и вот как он вызывается:
это просто кусок кода, она работает, но мне нужно завести счётчик который бы искал количество сравнений при поиске, его нужно где то в самом методе , где то в while поместить? (в коде в методе самом видно переменную counter) я так пробовал , но я не знаю правильно ли + мне нужно как то на консоль этот счетчик вывести я пробовал просто в конце метода написать Console.Writeline() но ничего не выводит, так как делаю неправильно , можете плиз направить в нужное русло? Спасибо
public static int searchString(String[] names, String key) {
int first = 0;
int counter = 0;
int last = names.Length;
while (first < last) {
int mid = (first + last) / 2;
if (key.CompareTo(names[mid]) < 0) {
last = mid;
} else if (key.CompareTo(names[mid]) > 0) {
first = mid + 1;
} else {
return mid;
}
counter++;
}
return -(first + 1);
}int results;
for (int key = 0; key < wordsForFind.Length; key++)
{
results = searchString(words, wordsForFind[key]);
if (results >= 0) {
Console.WriteLine(wordsForFind[key] + " is at index " + results);
}
else {
Console.WriteLine(wordsForFind[key] + " is not in the array.");
}
}
так в каком месте правильнее написать counter?
Решение задачи: «Подсчитать количество сравнений в алгоритме бинарного поиска»
textual
Листинг программы
int counter; results = searchString(words, wordsForFind[key], out counter); Console.WriteLine(counter);