# Binary search

JavaScript, Algorithm, Array · Dec 29, 2020 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.
```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;
};```
```binarySearch([1, 2, 3, 4, 5], 1); // 0
binarySearch([1, 2, 3, 4, 5], 5); // 4
binarySearch([1, 2, 3, 4, 5], 6); // -1```

### Written by Angelos Chalaris

I'm Angelos Chalaris, a JavaScript software engineer, based in Athens, Greece. The best snippets from my coding adventures are published here to help others learn to code.

If you want to keep in touch, follow me on GitHub or Twitter.

## More like this

• ### Linear search

Finds the first index of a given element in an array using the linear search algorithm.

JavaScript, Algorithm · Dec 28, 2020

• ### Heap sort

Sorts an array of numbers, using the heapsort algorithm.

JavaScript, Algorithm · Dec 28, 2020

• ### Bucket sort

Sorts an array of numbers, using the bucket sort algorithm.

JavaScript, Algorithm · Dec 29, 2020