二分探索の概要は、配列の中間にある値をチェックし、探索対象がそれよりも「大きい」「小さい」などで切り分けていく探索方法です。前提として探索対象のデータ群は、「昇順」や「降順」といった規則性を持っている場合のみに使用できます。
例えば、下記の昇順配列があり、配列中の20の場所を探したいとします。
[1,3,5,6,7,11,13,17,19,20,22]
イメージ図

ソースコード
func main() {
l1 := [...]int{1, 3, 5, 6, 7, 11, 13, 17, 19, 20, 22}
t := 20 //検索したい値
min := 0 //最小
mid := -1 //中間
max := len(l1) - 1 //最大
for min <= max {
mid = (min + max) / 2 //中間値を取得
if t == l1[min] {
break
} else if t > l1[mid] {
min = mid + 1
} else {
max = mid - 1
}
}
fmt.Plintln(mid)
}
こんな感じになります。
今日は二分探索(バイナリサーチ)について調べてみました。
それでは、 See you next time👉