我用java编写了一个分而治之的算法。问题是,我已经对其进行了测试,但我不确定它为什么或对数据做了什么。我知道它将数组拆分为子部分,但除此之外我很困惑他们返回的所有内容会发生什么。例如,最小的基本情况是否返回它的数字并进行比较?如果函数中有多个递归调用,那么递归的顺序是什么?我的代码是:
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。就像它返回的东西和类似的东西。
如果问题有点模棱两可,我很抱歉,但我知道如何编码,我似乎无法理解它如何返回所有内容,无论我开始使用的所有谷歌页面和 pdf 文件。
无论如何感谢所有的帮助!:D