二分探索の概要は、配列の中間にある値をチェックし、探索対象がそれよりも「大きい」「小さい」などで切り分けていく探索方法です。前提として探索対象のデータ群は、「昇順」や「降順」といった規則性を持っている場合のみに使用できます。
例えば、下記の昇順配列があり、配列中の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👉
ここまで読んでいただき、ありがとうございます。もしこの記事の技術や考え方に少しでも興味を持っていただけたら、ネクストのエンジニアと気軽に話してみませんか。
- 選考ではありません
- 履歴書不要
- 技術の話が中心
- 所要時間30分程度
- オンラインOK