给定未排序的数组,找到最大值和最小值。我尝试以递归,分而治之的方式执行此操作,但我不断收到堆栈溢出错误。我调试了,我继续在递归调用中收到错误,但不知道错误或如何修复它。
我有静态的最小和最大变量。
感谢您提供的信息和帮助!
static void findMaxMin(int[] array, int start, int end)
{
if (end == 2)
{
setMaxMin(array);
}
else
{
int mid = ((end) / 2);
findMaxMin(array, start, mid);
findMaxMin(array, mid + 1, end);
}
}
private static void setMaxMin(int[] array)
{
if (array[0] > array[1])
{
max = array[0];
min = array[1];
}
else
{
min = array[0];
max = array[1];
}
}
答案 0 :(得分:0)
这是一种简单的方法(没有递归):
void FindMinAndMaxValues(int[] array out int min, out int max)
{
min = int.MaxValue,
max = int.MinValue;
foreach(var val in array)
{
max = (val > max) ? val : max;
min = (val < min) ? val : min;
}
}
请注意我在这里使用了参数。这样做是为了简化代码。通常,我希望返回指定的班级或tuple。
此外,LINQ有min和max扩展方法可以使用 - 所以整个事情变成这样:
var max = array.Max();
var min = array.Min();