線形探索と二分探索の使い分けを考える。次のうち、二分探索よりも線形探索を使うほうが適している場面として最も適切なものはどれか。
- ①並び順がばらばらのデータから、目的の値を1回だけ探す
- ②昇順に並んだ100万件の名簿から、何度も値を探す
- ③昇順に並んだデータで、最大の比較回数を減らしたい
- ④50音順に並んだ単語の一覧から、目的の語を何度も探す
答えと解説を見る
正解は「並び順がばらばらのデータから、目的の値を1回だけ探す」。二分探索を使うには、先に並べ替える手間がかかるため。
なぜ
二分探索は、データが昇順か降順に整列していることが前提。ばらばらのデータなら、まず並べ替えが要る。例えば選択ソートで n 個を並べると n×(n−1)÷2 回比べるが、線形探索なら最大 n 回で済む。1回だけ探すなら、並べ替えずに線形探索するほうが手間が少ない。文部科学省の教員研修用教材も、並んでいる保証がない場合やデータが少ない場合は線形探索が有用なこともあると説明している。
ひっかけ注意
・「昇順に並んだ100万件の名簿から、何度も値を探す」…既に並んでいるので二分探索が向く。最大20回で済み、線形探索の最大100万回よりずっと少ない。
・「昇順に並んだデータで、最大の比較回数を減らしたい」…二分探索が向く場面。データが2倍になっても最大回数は1回増えるだけ。
・「50音順に並んだ単語の一覧から、目的の語を何度も探す」…50音順も整列の一種なので、真ん中と比べて範囲を半分にする二分探索が使える。