搜索
搜索:找出数组某个元素的下标
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 }

浙公网安备 33010602011771号