私はオンラインクラスを取っているので、先生や他のクラスメートからの助けはありません. 私たちの課題は、乱数の配列の最大値とインデックスを見つける必要があるということです。2 つの方法でそれを行う必要があります。通常のループ (ブルート フォース) と分割統治。分割統治では、配列を 2 つの小さな配列に分割し、両方の最大値を見つけてからマージする必要があります。
私はブルートフォースを働かせ、分割統治して最大値を見つけました。しかし、2つの小さな配列の最大値を取得して2つをマージできないようです。また、両方の方法で何回比較が行われたかを確認し、出力を出力する必要があります。
これが私がこれまでに持っているものです:
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);
}
}
}