mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-05 00:01:37 +08:00
Added BinarySearchIterative Function
* BinarySearchIterative Function is added * BinarySearch function is renamed to BinarySearchRecurisve * changes in test function - 3 binarySearchRecursive tests - 3 binarySearchIterative tests
This commit is contained in:
@ -7,7 +7,7 @@
|
||||
* value is found or the interval is empty.
|
||||
*/
|
||||
|
||||
function binarySearch (arr, x, low = 0, high = arr.length - 1) {
|
||||
function binarySearchRecursive (arr, x, low = 0, high = arr.length - 1) {
|
||||
const mid = Math.floor(low + (high - low) / 2)
|
||||
|
||||
if (high >= low) {
|
||||
@ -18,10 +18,10 @@ function binarySearch (arr, x, low = 0, high = arr.length - 1) {
|
||||
|
||||
if (x < arr[mid]) {
|
||||
// arr[mid] is an upper bound for x, so if x is in arr => low <= x < mid
|
||||
return binarySearch(arr, x, low, mid - 1)
|
||||
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 binarySearch(arr, x, mid + 1, high)
|
||||
return binarySearchRecursive(arr, x, mid + 1, high)
|
||||
}
|
||||
} else {
|
||||
// if low > high => we have searched the whole array without finding the item
|
||||
@ -29,6 +29,29 @@ function binarySearch (arr, x, low = 0, high = arr.length - 1) {
|
||||
}
|
||||
}
|
||||
|
||||
function binarySearchIterative (arr, x, low = 0, high = arr.length - 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
|
||||
}
|
||||
|
||||
|
||||
/* ---------------------------------- Test ---------------------------------- */
|
||||
|
||||
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
||||
@ -61,10 +84,10 @@ const stringArr = [
|
||||
'Zulu'
|
||||
]
|
||||
|
||||
console.log(binarySearch(arr, 3))
|
||||
console.log(binarySearch(arr, 7))
|
||||
console.log(binarySearch(arr, 13))
|
||||
console.log(binarySearchRecursive(arr, 3))
|
||||
console.log(binarySearchIterative(arr, 7))
|
||||
console.log(binarySearchRecursive(arr, 13))
|
||||
|
||||
console.log(binarySearch(stringArr, 'Charlie'))
|
||||
console.log(binarySearch(stringArr, 'Zulu'))
|
||||
console.log(binarySearch(stringArr, 'Sierra'))
|
||||
console.log(binarySearchIterative(stringArr, 'Charlie'))
|
||||
console.log(binarySearchRecursive(stringArr, 'Zulu'))
|
||||
console.log(binarySearchIterative(stringArr, 'Sierra'))
|
||||
|
Reference in New Issue
Block a user