Skip to content

Commit

Permalink
add binarySearchL, binarySearchG
Browse files Browse the repository at this point in the history
  • Loading branch information
gkucmierz committed Jun 17, 2024
1 parent 0628988 commit 4dbd8a8
Showing 1 changed file with 36 additions and 0 deletions.
36 changes: 36 additions & 0 deletions src/binary-search.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,39 @@ export const binarySearchRangeIncl = (arr, target) => {
binarySearchLE(arr, target),
];
};

// binary search array less element
const binarySearchL = (arr, target) => {
let [a, b] = [0, arr.length];
let lm;
while (b - a > 0) {
const mid = (a + b) / 2 | 0;
const val = arr[mid];
if (target <= val) {
b = mid;
} else if (val < target) {
a = mid;
}
if (lm === mid) return mid;
lm = mid;
}
return -1;
};

// binary search array greater element
const binarySearchG = (arr, target) => {
let [a, b] = [0, arr.length];
let lm;
while (b - a > 0) {
const mid = (a + b) / 2 | 0;
const val = arr[mid];
if (target >= val) {
a = mid;
} else if (val > target) {
b = mid;
}
if (lm === mid) return mid + 1;
lm = mid;
}
return 0;
};

0 comments on commit 4dbd8a8

Please sign in to comment.