ソート済み配列から目的の値を効率よく探す、二分探索(バイナリサーチ)の実装例です。コピペで動くコードと実行結果、処理の流れを確認できます。 下のコードはブラウザ内でそのまま実行できます。「実行エディタで開く」を押すと、progoのオンラインJavaScript実行環境にコードが読み込まれ、その場で動作を確認できます。
const arr = [1, 3, 5, 7, 9, 11, 13];
const target = 9;
let low = 0, high = arr.length - 1, result = -1;
while (low <= high) {
const mid = Math.floor((low + high) / 2);
if (arr[mid] === target) {
result = mid;
break;
} else if (arr[mid] < target) {
low = mid + 1;
} else {
high = mid - 1;
}
}
console.log("インデックス:", result);
▶ このコードを実行エディタで開く
Math.floorで中央インデックスを求めます。low/highを更新します。breakします。