線形探索の比較回数

学習の目的

  • 1. データ数と比較回数

  • 2. 平均比較回数を計算しよう

探索アルゴリズムでは「比較回数」が、探索の効率の良さを表すとても重要な項目です。

比較回数をどのように求めていくか学習します。

1. データ数と比較回数

線形探索の処理手順を確認しました。
では次に、実際にどのくらい比較をおこなうのかを考えてみましょう。

パターン1

要素数50のときの最小比較回数と最大比較回数

パターン2

要素数100のときの最小比較回数と最大比較回数

それぞれのパターンでの最小比較回数は何回になりますか?

比較回数が少ないってことですよね。それなら、最初の1回目の探索で見つかった場合なので、要素数50個のときも100個のときも1回です。

そうですね。それでは最大比較回数は何回ですか?

比較回数が一番多くなるときは、データが見つからないときなので⋯

要素数が50個のときは50回、要素数が100個のときは100回かな?

よくできました。まとめると次のようになります。

要素数 最小比較回数
(先頭データで見つかった
ときの比較回数)
最大比較回数
(最後の要素で見つかった
ときの比較回数)
50個 1回 50回
100個 1回 100回

先頭要素で探索値が見つかったときの比較回数は、データ数が違う場合でも同じ1回ということがわかりますね。

はい!最初に見つかるから要素数がどんなに多くても最初の1回で見つかりますものね。

そうか、どんなにデータがあっても先頭にあるから1回か。

それでは、最後の要素で探索値が見つかる場合の比較回数を見て何か気付きますか?

要素数が50のときが比較回数が50回、100のときは比較回数は100回なので・・・
要素数と比較回数が一緒です。

そうですね。線形探索は要素数が増えれば増えるほど、増えた分だけ比較回数も増えていきます。

比較が増えるということは、それだけ処理時間もかかるということです。

これを踏まえて、例えば、要素数100の配列を使った場合にある値を探索する場合は、平均何回くらい比較するでしょうか。

平均・・・、どうやって求めたらいいんだろう。

平均は次のように考えます。

探索値が最初の要素にある場合、2番目の要素にある場合、3番目の要素にある場合、・・・と考えていくと比較回数は、

  • 最初の要素にある場合:比較回数 1 回
  • 2番目の要素にある場合:比較回数 2 回
  • 3番目の要素にある場合:比較回数 3 回
  • ・・・
  • 100番目の要素にある場合:比較回数 100 回

になるので、比較回数の平均は「比較回数の和 ÷ 回数」で求められますが、次の計算式で求めることができます。

計 算 式

要素数nの線形探索の平均比較回数 = (1 + n) / 2

要素数が100の場合、上記計算式の n に100を当てはめて計算します。

これで、要素数が100のときに目的のデータを探索するときは、平均50.5回比較することがわかりました。

計算式は公式として覚えておきましょう。

参 考

例えば、要素数が50のときや200のときの線形探索をした場合の平均比較回数は次のように計算できます。

要素数 50 のとき : 平均比較回数 = (1 + 50)/2 = 25.5回
要素数 200 のとき : 平均比較回数 = (1 + 200)/2 = 100.5回

線形探索は探索対象の要素数が多くなればなるほど、それに比例して平均比較回数も多くなります。

要素数nのときの線形探索の比較回数をまとめると次のようになります。

最小比較回数 最大比較回数 平均比較回数
1 n (1 + n) / 2

平均は、最小比較回数の 1 と最大比較回数の n を足して2で割るだけですね。

なるほど、それなら計算は簡単だね。

2. 平均比較回数を計算しよう

次の条件で線形探索をした場合、比較回数は何回になるか答えましょう。

要素数が1,000の配列を線形探索します。ただし、探索値は必ずあるものとします。

最後の要素で探索値が見つかった場合の比較回数

最初の要素で探索値が見つかった場合の比較回数

平均比較回数

※この再現版では提出は行いません(送信先は未接続です)

Well done!

次のステップに進みましょう!

次のステップに進む

← 前のステップにもどる