Skip to content
Prev Previous commit
Next Next commit
Add input validation for empty or invalid array in binary search
  • Loading branch information
MayankSharma-2812 committed Jan 23, 2026
commit a52354a1d6d170d1e59fa041cd389aaa142fe81b
22 changes: 12 additions & 10 deletions Search/BinarySearch.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,44 +8,46 @@
*/

function binarySearchRecursive(arr, x, low = 0, high = arr.length - 1) {
if (!Array.isArray(arr) || arr.length === 0) {
return -1
}

const mid = Math.floor(low + (high - low) / 2)

if (high >= low) {
if (arr[mid] === x) {
// item found => return its index
return mid
}

if (x < arr[mid]) {
// arr[mid] is an upper bound for x, so if x is in arr => low <= x < mid
return binarySearchRecursive(arr, x, low, mid - 1)
} else {
// arr[mid] is a lower bound for x, so if x is in arr => mid < x <= high
return binarySearchRecursive(arr, x, mid + 1, high)
}
} else {
// if low > high => we have searched the whole array without finding the item
return -1
}

return -1
}

function binarySearchIterative(arr, x, low = 0, high = arr.length - 1) {
if (!Array.isArray(arr) || arr.length === 0) {
return -1
}

while (high >= low) {
const mid = Math.floor(low + (high - low) / 2)

if (arr[mid] === x) {
// item found => return its index
return mid
}

if (x < arr[mid]) {
// arr[mid] is an upper bound for x, so if x is in arr => low <= x < mid
high = mid - 1
} else {
// arr[mid] is a lower bound for x, so if x is in arr => mid < x <= high
low = mid + 1
}
}
// if low > high => we have searched the whole array without finding the item

return -1
}

Expand Down