mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-05 00:01:37 +08:00
binary search recursive algorithm added
This commit is contained in:
29
Recursive/BinarySearch.js
Normal file
29
Recursive/BinarySearch.js
Normal file
@ -0,0 +1,29 @@
|
||||
|
||||
// https://en.wikipedia.org/wiki/Binary_search_algorithm
|
||||
// Search the integer inside the sorted integers array using Binary Search Algorithm
|
||||
|
||||
const BinarySearch = (intArr, searchQuery) => {
|
||||
if (searchQuery === null || searchQuery === undefined || intArr.length === 0) {
|
||||
return false
|
||||
}
|
||||
|
||||
const middleIndex = intArr.length === 1 ? 0 : Math.ceil(intArr.length / 2)
|
||||
|
||||
if (intArr[middleIndex] === searchQuery) {
|
||||
return true
|
||||
} else if (intArr.length > 1) {
|
||||
return intArr[middleIndex] < searchQuery ? BinarySearch(intArr.slice(1, middleIndex)) : BinarySearch(intArr.slice(middleIndex))
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// testing
|
||||
(() => {
|
||||
console.log('Number Present with odd array length: 5 = ', BinarySearch([1, 2, 3, 4, 5, 6, 7], 5))
|
||||
console.log('Number Present with even array length: 5 = ', BinarySearch([1, 2, 4, 5, 6], 5))
|
||||
console.log('Number Present with only single element: 5 = ', BinarySearch([5], 5))
|
||||
console.log('Number Not Present: 0 = ', BinarySearch([1, 2, 3, 4, 5], 0))
|
||||
console.log('Undefined number search query = ', BinarySearch([1, 2, 3, 4, 5]))
|
||||
console.log('With Empty array = ', BinarySearch([], 1))
|
||||
})()
|
Reference in New Issue
Block a user