Я написал алгоритм разделения и покорения в java. Проблема в том, что я тестировал ее, но это не работает, но я не уверен, почему и что она делает с данными. Я знаю, что он разбивает массив на части, но кроме этого я смущен, что происходит, что они возвращают все. Например, самый маленький базовый регистр возвращает его номер и сравнивает это? Кроме того, какой порядок рекурсивный имеет место, если в функции используется более одного рекурсивного вызова? Мой код:Как алгоритмы Divide и Conquer работают с данным вводом?
public static int FindMin(int[] array, int low, int high)
{
int min = 0, min1 = 0, min2 = 0;
int mid = 0;
if (low == high)
{
min = array[low];
}
else if (low == (high - 1))
{
if (array[low] < array[high])
{
min = array[low];
}
else if (array[low] > array[high]);
{
min = array[high];
}
}
else
{
mid = (low + high)/2;
min1 = FindMin(array, low, mid);
min2 = FindMin(array, mid+1, high);
if (min1 < min2)
{
min = min1;
}
else
{
min = min2;
}
}
return min;
}
В основном то, что я хочу знать: как алгоритм будет работать, если он был дан вход: 3,6,1,5,7,2,1. Как то, что он возвращает, и тому подобное.
Прошу прощения, если вопрос несколько неоднозначен, но я знаю, как его кодировать, я просто не могу понять, как он возвращает все, независимо от всех страниц Google и pdf-файлов, с которых я начал.
Спасибо за помощь! : D
отладчик - ваш друг –
Я бы сказал, что это похоже на Mergesort. Я займусь глубже. –
Пробовал инструмент отладчика, но на самом деле это не помогло, все еще так же запутано, как раньше. –