export function binarySearch(
arr: Array<any>,
key: any,
compareFn: (key: number, mid: Array<number>) => number
): number {
let low = 0;
let high = arr.length - 1;
while (low <= high) {
let mid = Math.round((high + low) / 2);
let cmp = compareFn(key, arr[mid]);
if (cmp > 0) {
low = mid + 1;
} else if (cmp < 0) {
high = mid - 1;
} else {
return mid;
}
}
return -1;
}