replace target with arr[mid]
This commit is contained in:
@ -1,17 +1,16 @@
|
|||||||
### binarySearch
|
### binarySearch
|
||||||
|
|
||||||
Use recursion to perform a logarithmic search similar to `.indexOf()` that finds the index of a value within an array. The two differences being
|
Use recursion. Similar to `Array.indexOf()` that finds the index of a value within an array. The two differences being
|
||||||
1. Operation only works with sorted arrays
|
1. Operation only works with sorted arrays
|
||||||
2. Offers a major performance boost when compared to a linear search or `.indexOf()`
|
2. Offers a major performance boost when compared to a linear search or `Array.indexOf()`
|
||||||
|
|
||||||
```js
|
```js
|
||||||
const binarySearch = (arr, val, start = 0, end = arr.length - 1) => {
|
const binarySearch = (arr, val, start = 0, end = arr.length - 1) => {
|
||||||
if (start > end) return -1;
|
if (start > end) return -1;
|
||||||
const mid = Math.floor((start + end) / 2);
|
const mid = Math.floor((start + end) / 2);
|
||||||
const target = arr[mid];
|
return (arr[mid] > val)
|
||||||
return (target > val)
|
|
||||||
? binarySearch(arr, val, start, mid - 1)
|
? binarySearch(arr, val, start, mid - 1)
|
||||||
: (target < val)
|
: (arr[mid] < val)
|
||||||
? binarySearch(arr, val, mid + 1, end)
|
? binarySearch(arr, val, mid + 1, end)
|
||||||
: mid
|
: mid
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user