iT邦幫忙

2024 iThome 鐵人賽

DAY 22
0
佛心分享-刷題不只是刷題

刷題筆記系列 第 22

[Day22] Patterns: Binary Search(二分法搜尋)

  • 分享至 

  • xImage
  •  

今天來記錄一下二分法搜尋吧! 雖然這類型相關的題目在還沒正式認識二分法搜尋之前,"盲寫"也解得出來,不過還是做個記錄吧!

Binary Search(二分法搜尋)只能使用在有序陣列上。

Binary Search (二分法搜尋) 做法

  1. 二分搜尋先比較陣列中位元素和目標值。
  2. 如果目標值與中位元素相等,則回傳其在陣列中的位置。
  3. 如果目標值小於中位元素,則繼續搜尋前半部分的陣列。
  4. 如果目標值大於中位元素,則在陣列上繼續搜尋。

由此,演算法每次排除掉至少一半的待查陣列。

咦?為什麼前面說"盲寫"也大概寫出來呢?
因為一開始在寫這類型的題目時,馬上就讓我聯想到"猜數字"這個遊戲,在網路上其他前輩的分享中也可以看到,其實玩這個遊戲的訣竅、根本核心就是Binary Search(二分法搜尋)呀~

請你回想"猜數字"的遊戲規則,要如何用最少的機會,在0~100的範圍內最快猜中數字37呢?

  • 首先,你會先猜數字50,因為50是0~100的中間數
  • 這個時候,遊戲會告知你答錯,要小於50
  • 你會猜50的一半數字25
  • 遊戲告知你應該大於25
  • 這時候你會想25~50的中間數37.5,但是遊戲規則是猜整數,於是你猶豫了,可能會選擇37或者38,如果選擇37那麼你就贏了,若選擇38,則繼續反覆前面的步驟繼續猜數字。

假設最後直接選擇數字37,那麼你便使用了一個最保險的策略,同時也使用了最少的機會去猜中數字。而上面的方法其實就是二分搜尋法的概念。


上一篇
[Day21] Insert Interval
下一篇
[Day23] Search Insert Position
系列文
刷題筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言