1. 程式人生 > >js 二分查詢(Binary Search)

js 二分查詢(Binary Search)

陣列二分查詢:

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; };