Мне нужно написать метод, который будет сравнивать элементы в массиве строк и возвращать индекс наибольшего элемента. Это будет сделано рекурсивно с использованием подхода «разделяй и властвуй». У меня есть идея, и я просто искал, была ли моя идея правильной или ее нужно было сделать по-другому.
Я планировал посмотреть на массив с левой стороны на mid
-1, затем посмотреть на mid
, а затем на mid
+1 справа. У меня есть переменная, которая будет отслеживать самый большой индекс, а затем сделать рекурсивный вызов для левой и правой сторон.
Это звучит как хороший способ решить эту проблему?
Это то, что я имею до сих пор:
public int longest()
{
longest(0, a.length-1);
return longestIndex;
}
private int longest( int left, int right)
{
int longestIndex;
int mid;
if(left > right)
{
longestIndex = -1;
}
else if(left == right)
{
longestIndex = 0;
}
else
{
longestIndex = 0;
mid = (left + right) / 2;
longest(left, mid - 1);
if (a[mid].compareTo(a[longestIndex]) > 0)
{
longestIndex = mid;
}
longest(mid + 1, right);
}
return longestIndex;
}
Кроме того, поскольку методы должны возвращать int, как бы я передал longestIndex n private-метод в public-метод, чтобы он отображался в моей тестовой программе при вызове longest?