js 二分查詢(Binary Search)
阿新 • • 發佈:2018-11-08
陣列二分查詢:
1.先對陣列排序,從小到大排序
2.定義兩個指標,左指標(left)指向陣列第一個元素,右指標(right)指向陣列最後一個元素
3.取陣列中間(nums[mid])的項和目標值(target)比較
4.如果中值小於目標值,說明目標值在後半陣列,將左指標(left)指向nums[mid+1],若大於同理。如果相等就直接返回
5.如果左指標指向的項的索引大於右指標指向的項的索引,說明已經查詢完了也沒找到目標值,返回-1
程式碼如下:
var search = function(nums, target) { var l=0,r=nums.length-1;while(l<=r){ var mid=parseInt((l+r)/2); if(target===nums[mid]) return mid; else if(target<nums[mid]) r=mid-1; else if(target>nums[mid]) l=mid+1; } return -1; };