iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0
自我挑戰組

JavaScript - 30天 - 自學挑戰系列 第 8

關於Binary Search搜尋方法與示意圖

  • 分享至 

  • xImage
  •  

Binary search
Traversal in Binary Tree:

此搜尋法在數據已排序完成下較適合使用,將陣列中央的數值與目標數值進行比較,
並判斷目標數值在陣列中央的左邊或右邊。因此,每一次比較就縮小一半的搜尋範圍。

https://ithelp.ithome.com.tw/upload/images/20220910/201520925zKV7f6I59.png

Input: nums = [1, 2, 3, 4, 5]

let binarySearch = (nums, target) => {
  let left = 0, right = nums.length -1
  
  while (left <= right) {
    let middleIndex = Math.floor((left+ right) / 2)

    if (nums[middleIndex] === target) {
      return middleIndex
    } else if (nums[middleIndex] > target) {
      right = middleIndex - 1
    } else if (nums[middleIndex] < target) {
      left = middleIndex + 1
    }
  }
  return false
};

console.log(binarySearch([1, 2, 3, 4, 5], 2))

Output: 1

Flow Chart:

console.log(middleIndex, left, right)

step.1
(middleIndex, left, right) //(2, 0 ,4)
nums[middleIndex] > target //3 > 2
right = middleIndex - 1 //4 - 1 = 3

step.2
(middleIndex, left, right) //(1, 0 ,3)
nums[middleIndex] === target //2 = 2
return middleIndex = 1

上一篇
關於Linear Search搜尋方法與示意圖
下一篇
關於Binary Tree Traversal的學習心得與示意圖
系列文
JavaScript - 30天 - 自學挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言