以下は、分割統治アルゴリズムを使用して配列の最大値を計算する問題を解決する例です。
function findMax(arr, start, end) {
// 递归结束条件
if (start === end) {
return arr[start];
}
// 分治计算
const mid = Math.floor((start + end) / 2);
const leftMax = findMax(arr, start, mid);
const rightMax = findMax(arr, mid + 1, end);
// 合并结果
return Math.max(leftMax, rightMax);
}
const nums = [4, 9, 2, 7, 5, 1, 6];
const max = findMax(nums, 0, nums.length - 1);
console.log(max); // 输出:9
上の例では、分割統治アルゴリズムを使用して配列内の最大値を見つけました。このアルゴリズムの考え方は、問題をより小さなサブ問題に分解し、これらのサブ問題を再帰的に解決し、その結果を組み合わせて最終的な解決策を得るというものです。
各ステップで、配列を半分に分割し、左半分と右半分の最大値を別々に計算します。次に、左半分の最大値と右半分の最大値を比較し、大きい方を配列全体の最大値とします。
分解と結合を継続的に行うことで、最終的には配列全体の最大値を見つけることができます。この例では、配列は [4, 9, 2, 7, 5, 1, 6] で、分割統治アルゴリズムを使用して見つかった最大値は 9 です。