「ZJOI2022」樹
阿新 • • 發佈:2022-05-07
順序搜尋
*遍歷陣列
*找到跟目標值相等的元素,就返回它的下標
*遍歷結束後,如果沒有搜尋到目標值,就返回-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 }