搜索
搜索:找出数组某个元素的下标
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 }
分类:
算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人