二分查找
前提
只能在有序数组中进行查找,如果原始数据是无序的需要先对原始数据进行排序
实现
ts
function bianarySearch<T>(searchItem: T, dataList: T[]): { index: number; item: T } | undefined {
if (!dataList || dataList.length === 0) {
return
}
let startIndex = 0
let endIndex = dataList.length - 1
if (dataList[startIndex] === searchItem) {
return { index: startIndex, item: dataList[startIndex] }
} else if (dataList[endIndex] === searchItem) {
return { index: endIndex, item: dataList[endIndex] }
} else {
let mid = Math.floor((startIndex + endIndex) / 2)
}
}