37 lines
1.0 KiB
Markdown
37 lines
1.0 KiB
Markdown
---
|
|
title: Binary search
|
|
tags: algorithm,array
|
|
author: chalarangelo
|
|
cover: zen-indoors
|
|
firstSeen: 2020-12-28T12:35:44+02:00
|
|
lastUpdated: 2020-12-29T13:06:47+02:00
|
|
---
|
|
|
|
Finds the index of a given element in a sorted array using the binary search algorithm.
|
|
|
|
- Declare the left and right search boundaries, `l` and `r`, initialized to `0` and the `length` of the array respectively.
|
|
- Use a `while` loop to repeatedly narrow down the search subarray, using `Math.floor()` to cut it in half.
|
|
- Return the index of the element if found, otherwise return `-1`.
|
|
- **Note:** Does not account for duplicate values in the array.
|
|
|
|
```js
|
|
const binarySearch = (arr, item) => {
|
|
let l = 0,
|
|
r = arr.length - 1;
|
|
while (l <= r) {
|
|
const mid = Math.floor((l + r) / 2);
|
|
const guess = arr[mid];
|
|
if (guess === item) return mid;
|
|
if (guess > item) r = mid - 1;
|
|
else l = mid + 1;
|
|
}
|
|
return -1;
|
|
};
|
|
```
|
|
|
|
```js
|
|
binarySearch([1, 2, 3, 4, 5], 1); // 0
|
|
binarySearch([1, 2, 3, 4, 5], 5); // 4
|
|
binarySearch([1, 2, 3, 4, 5], 6); // -1
|
|
```
|