探索・ソートの基本
線形探索・二分探索・バブルソートを、配列を追いながら理解します。
→ アルゴリズム・探索トレーニングを開く
線形探索
先頭から目的の値と一致するかを1個ずつ調べます。
二分探索
整列済みの配列で中央と比較し、探索範囲を半分ずつ絞ります。
バブルソート
隣り合う値を比較し、昇順なら左の方が大きいときに交換します。
線形探索 → 先頭から順番
二分探索 → 中央から半分ずつ
バブルソート → 隣同士を比較
アルゴリズムとは?
アルゴリズムは、問題を解決するための処理手順です。同じ結果を得る場合でも、手順によって処理時間や必要なメモリが変わるため、探索や整列などの代表的な方法を理解することが重要です。
線形探索とは?
線形探索は、データを先頭から順番に1件ずつ調べる方法です。データが整列されていなくても利用できますが、目的の値が後ろにあるほど比較回数が増えます。
二分探索とは?
二分探索は、整列済みのデータを中央で分けながら探索範囲を半分ずつ絞り込む方法です。
線形探索と二分探索の違い
線形探索は未整列でも使えます。二分探索は高速に絞り込める一方、基本的に探索対象が整列されている必要があります。
バブルソートとは?
バブルソートは隣り合う要素を比較し、順序が逆なら交換する操作を繰り返す整列方法です。各回の配列状態を書き出すと処理を追いやすくなります。
次は実際に10問解いて、配列の動きを確認しましょう。
探索アルゴリズムの考え方
線形探索は先頭から順番に調べる方法で、データが整列されていなくても使えます。二分探索は整列済みのデータを半分ずつ絞り込む方法です。
具体例:二分探索
バブルソートの見方
隣り合う要素を比較し、順序が逆なら交換する操作を繰り返します。1回の走査で大きい値が端へ移動していく様子を追うと理解しやすくなります。
よくある間違い
「高速だから二分探索」と即決せず、データが整列されているかを最初に確認しましょう。また、配列の添字と要素の値を混同しないことも大切です。
試験でのポイント
アルゴリズム問題では、変数の値を頭の中だけで追わず、各反復後の配列・探索範囲・添字を紙に書いて追跡するとミスを減らせます。
図で追う:二分探索はどう絞る?
整列済みの7要素から「17」を探します。毎回、探索範囲の中央と比較します。
17 > 12 なので右側だけを残します。
17 < 21 なので左側だけを残します。
線形探索との使い分け
未整列のデータを少数回探すなら線形探索が手軽です。二分探索はデータの整列が前提で、要素数が増えても比較回数が増えにくい特徴があります。
確認問題:二分探索を未整列の配列にそのまま使える?
使えません。中央との大小比較で片側を除外するには、整列されている必要があります。
実務例:検索機能の処理方法を選ぶ
商品番号の一覧から目的の商品を探す場面を考えます。10件ほどの未整列データなら、先頭から順に比較する線形探索は実装が簡単です。一方、番号順に整列済みの大きな配列で何度も検索するなら、中央と比較して候補を半分ずつ減らす二分探索が有効です。
例えば要素数が1,024件の場合、線形探索は最悪1,024回の比較が必要ですが、二分探索は高々11回程度の比較で発見・不在判定できます(実装と数え方により異なります)。ただし、二分探索は整列済みであることが前提です。データを一度だけ検索するなら、整列コストまで含めて選びます。
確認問題:商品番号がランダムに並んだ配列に二分探索を使える?
そのままでは使えません。まず整列するか、線形探索など別の方法を選びます。