У меня есть быстрый быстрый вопрос, но у меня возникли проблемы с пониманием, пример кода ниже с комментариями.с ошибкой сравнения, считая в то время как в двоичном поиске и последовательном, нужна ясность
При поиске по массиву элементов с использованием binarySearch, что такое сравнение?
или в случае массива int
, содержащего 178,384,471,478,487,576,617,630,649,817,821,915,917,972,975
с 821
, являющимся целью, с которой будет считаться сравнение ???
Я разместил там, где я думаю, что происходит сравнение, пожалуйста, исправьте меня, если я ошибаюсь, или скажите мне, правильно ли я :) спасибо всем.
public static int binarySearch(String[] data, String target, int first, int last)
{
if(first > last)
return -1;
else
int middle = (first+last)/2;
int result = data[first].compareTo(data[middle])
if(result == 0) //IS THIS A COMPARISON? (I THINK YES)
return middle;
else if(result < 0) // IS THIS A COMPARISON (I THINK YES)
return binarySearch(data,target.first,middle-1);
else
return binarySearch(data,target,middle+1,last); // IS THIS A COMPARISON? (I THINK NO)
}
Ну, сколько раз это было бы рассчитано в массиве 'int', содержащем' 178,384,471,478,487,576,617,630,649,817,821,915,917,972,975' с '821' является целью. – Kevin
вы можете добавить инструкцию печати' System.out.println («execute») 'после/перед линией сравнения. Затем подсчитайте строки в выходном потоке. – tkokasih