アルゴリズムを、はじめようを参考に、JavaScript を用いて二分探索法を実装してみました。
<button onclick="buttonClicked()">buttonClicked()</button>
<script>
var array = [11, 13, 17, 19, 23, 29, 31];
// 検索対象
const target = 19;
function buttonClicked() {
// 先頭
let top = 0;
// 末尾
var end = array.length;
search(top, end);
console.log('process completed.');
}
function search(top, end) {
// 注意: top > end だと、top と end が同じ時に無限ループとなってしまう。
// よって、判定条件は >= とする。
if (top >= end) {
console.log('not found...');
return;
}
// 中央位置
let middle = parseInt((top + end) / 2, 10);
if (target === array[middle]) {
console.log('target found', target);
return;
} else {
if (target < array[middle]) {
// 中央位置の値よりも、検索対象の値が小さい場合 => 検索対象を前半分
end = middle;
search(top, end);
} else if (target > array[middle]) {
// 中央位置の値よりも、検索対象の値が大きい場合 => 検索対象を後ろ半分
top = middle + 1;
search(top, end);
}
}
}
</script>