UNPKG

algorithmpool

Version:
30 lines (28 loc) 951 B
import { Compare, defaultCompare, DOES_NOT_EXIST } from '../../utils/util'; import { quickSort } from '../sort/quickSort'; function binarySearchRecursive(array, value, low, high, compareFn = defaultCompare) { if (low <= high) { const mid = Math.floor((low + high) / 2); const element = array[mid]; if (compareFn(element, value) === Compare.LESS_THAN) { return binarySearchRecursive(array, value, mid + 1, high, compareFn); } if (compareFn(element, value) === Compare.BIGGER_THAN) { return binarySearchRecursive(array, value, low, mid - 1, compareFn); } return mid; } return DOES_NOT_EXIST; } export const binarySearch = (array, value, compareFn = defaultCompare) => { const sortedArray = quickSort(array); const low = 0; const high = sortedArray.length - 1; return binarySearchRecursive(array, value, low, high, compareFn); }