//有序的数字组合
//while 会比 递归性能更好 因为调用函数消耗的时间更多
export function searchData(arr:number[],target:number):number {
if(!arr.length){
return -1
}
let start = 0
let end = arr.length-1
while (start<=end){
const middleIndex = Math.floor((start+end)/2)
const middle = arr[middleIndex]
if(middle===target){
return middleIndex
}else if(middle>target){
end = middleIndex-1
}else {
start = middleIndex+1
}
}
return -1
}
function searchData2(arr:number[],target:number,start?:number,end?:number):number {
if(!arr.length){
return -1
}
if(!start){
start = 0
}
if(!end){
end = arr.length-1
}
if (start<=end){
const middleIndex = Math.floor((start+end)/2)
const middle = arr[middleIndex]
if(middle===target){
return middleIndex
}else if(middle>target){
return searchData2(arr,target,start,middleIndex-1)
}else {
return searchData2(arr,target,middleIndex+1,end)
}
}
return -1
}
算法题-二分查找法
最新推荐文章于 2024-09-14 22:25:23 发布