JS二分法查找数组中某个值的下标

一、找到数组中间下标,将数组以分为二
二、如果数组中不含有目标值直接返回-1
三、通过比较目标值与数组中间下标的值大小,改变查找范围
四、不断递归,直到目标值与数组中间下标值相等,返回该下标

function searchIdx(arr , target , start , end) {
    
    
            let mIdx = Math.floor((start + end) / 2)
            if(!arr.includes(target)){
    
    
                return -1
            }
            while(start <= end){
    
    
                if(arr[mIdx < target]){
    
    
                    searchIdx(arr,target , mIdx + 1 , end)
                }else if (arr[mIdx] > target){
    
    
                    searchIdx(arr , target, start , mIdx - 1)
                }else{
    
    
                    return mIdx
                }
            }
            return -1
        }
        const arr = [1,2,3,465,3,99,14,28];
        console.log(searchIdx(arr,88,0,arr.length-1))  // -1
        console.log(searchIdx(arr,465,0,arr.length-1))  // 4

猜你喜欢

转载自blog.csdn.net/YL971129/article/details/113837776