binary search in ES6
JavaScript
let steps = 0;
// O(log(n))
// each time the array gets halfed until value is found
// or not.
const binarySearch = (array, value) => {
const length = array.length;
const middle = Math.floor(length/2);
const middleElement = array[middle];
steps++;
if (length === 1) {
if (array[0] === value) {
return true;
} else {
return false;
}
}
if (middleElement > value) {
const leftSide = array.slice(0, middle + 1);
return binarySearch(leftSide, value);
} else if (middleElement < value) {
const rightSide = array.slice(middle, length);
return binarySearch(rightSide, value);
} else {
console.log('steps: '+steps);
return true;
}
};
console.log(binarySearch([1,2,3,4,5,6,7,8,9,10], 11))