我正在上在线课程,所以没有老师或其他同学的任何帮助。我们的任务是我们需要找到一个随机数数组的最大值和索引。我们需要通过两种方式来做到这一点。一个常规循环(蛮力)和分而治之。在分而治之中,我们需要将数组拆分为两个较小的数组并找到两者的最大值然后合并。
我得到了蛮力的工作,我得到了分而治之,也找到了最大值。但我似乎无法获得两个较小数组的最大值并将两者合并。我们还需要检查两种方法进行了多少比较并打印输出。
这是我到目前为止所拥有的:
public class MinMaxValues{
// Find maxiumum (largest) value in array using Divide and Conquer
public static int findMax( int[]numbers, int left, int right )
{
int middle;
int max_l, max_r, max_m;
if ( left == right ) // Only one element...
{
// Base case: solved easily...
return numbers[left];
}
else
{
// Solve smaller problems
middle = (left+right)/2; // Divide into 2 halves
max_l = findMax( numbers, left, middle);
// Find max in first half
max_r = findMax( numbers, middle+1, right);
// Find max in second half
//System.out.println("Maximum Value = " + max_r);
max_m = max_l+ max_r;
// Use the solutions to solve original problem
if ( max_l > max_r )
return(max_l);
else
return(max_r);
//return(max_m);
}
}
}