搜索

搜索:找出数组某个元素的下标

js:IndexOf

顺序搜索

*遍历数组

*找到跟目标值相等的元素,就返回它的下标

*遍历结束后,如果没有搜索到目标值,就返回-1

时间复杂度

*遍历数组是一个循环

*时间复杂度:O(n)

Array.prototype.sequentialSearch=function (item){
    for(let i =0;i<this.length;i++){
        if(this[i]===item){
            return i
        }
    }
}

二分搜索

*从数组的中间元素开始,如果中间元素正好是目标值,则搜索结束

*如果目标值大于或者小于中间元素,则 在大于或小于中间元素的那一半数组中搜索

时间复杂度

*每一次比较都使得搜索范围缩小一半

*时间复杂度O(logN)

复制代码
Array.prototype.binarySearch=function (item){
   //前提是有序
    let low =0
    let high = this.length-1
    while (low<=high){
        const mid =Math.floor((low+high)/2)
        const  element =this[mid]
        if(element<item){//中间元素比目标值小,low就应该取mid上一个
            low=mid +1
        }else if(element >item){//中间元素比目标值大,high就应该取mid下一个
            high = mid -1
        }else {
            return  mid
        }
    }
    return -1
}
复制代码

 

posted @   前端路远且长  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示