/** * Note: Array must be sorted for binary search */ function binarySearch(arr, key) { let low = 0; let high = arr.length - 1; while (low <= high) { let mid = Math.floor((low + high) / 2); if (key < arr[mid]) { high = mid - 1; } else if (key > arr[mid]) { low = mid + 1; } else { // return the key return mid; } } return null; } function binarySearchRecursive(arr, low, high, key) { const mid = Math.floor((high - low) / 2 + low); if (high <= low && arr[mid] !== key) { return null; } else if (key === arr[mid]) { return mid; } else if (key < arr[mid]) { return binarySearchRecursive(arr, low, mid - 1, key); } else if (key > arr[mid]) { return binarySearchRecursive(arr, mid + 1, high, key); } } module.exports = { binarySearch, binarySearchRecursive, };