export namespace Binary { export function search<T>(array: T[], id: string, compare: (item: T) => string): { found: boolean; index: number } { let left = 0 let right = array.length - 1 while (left <= right) { const mid = Math.floor((left + right) / 2) const midId = compare(array[mid]) if (midId === id) { return { found: true, index: mid } } else if (midId < id) { left = mid + 1 } else { right = mid - 1 } } return { found: false, index: left } } export function insert<T>(array: T[], item: T, compare: (item: T) => string): T[] { const id = compare(item) let left = 0 let right = array.length while (left < right) { const mid = Math.floor((left + right) / 2) const midId = compare(array[mid]) if (midId < id) { left = mid + 1 } else { right = mid } } array.splice(left, 0, item) return array }}
export namespace Binary {
export function search<T>(array: T[], id: string, compare: (item: T) => string): { found: boolean; index: number } {
let left = 0
let right = array.length - 1
while (left <= right) {
const mid = Math.floor((left + right) / 2)
const midId = compare(array[mid])
if (midId === id) {
return { found: true, index: mid }
} else if (midId < id) {
left = mid + 1
} else {
right = mid - 1
}
}
return { found: false, index: left }
}
export function insert<T>(array: T[], item: T, compare: (item: T) => string): T[] {
const id = compare(item)
let left = 0
let right = array.length
while (left < right) {
const mid = Math.floor((left + right) / 2)
const midId = compare(array[mid])
if (midId < id) {
left = mid + 1
} else {
right = mid
}
}
array.splice(left, 0, item)
return array
}
}