Binary Search algorithm by LeetCode, template 1 in JavaScript
Binary search algorithm, template 1, simple version. Source: https://leetcode.com/explore/learn/card/binary-search/125/template-i/938/
by Yurii Predborskyi
JavaScript
// binary seach original algorithm
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
let search = function(nums, target) {
let left = 0;
let right = nums.length - 1;
while (left <= right) {
let mid = left + Math.floor((right - left) / 2);
if (nums[mid] === target) {
return mid;
} else if (nums[mid] < target) {
left = mid + 1;
} else if (nums[mid] > target) {
right = mid - 1;
}
}
return -1;
};
let tests = [
{ nums: [-1,0,3,5,9,12], target: 9, answer: 4 },
{ nums: [-1,0,3,5,9,12], target: 2, answer: -1 },
{ nums: [5], target: 5, answer: 0 },
{ nums: [5], target: 3, answer: -1 },
{ nums: [2,5], target: 2, answer: 0 },
{ nums: [-1,0,5], target: 5, answer: 2 },
];
tests.forEach(test => {
let res = search(test.nums, test.target);
console.log(res, res === test.answer);
});