アルゴリズム図鑑擬似言語のコードと、動きの見える化
科目Bによく出るアルゴリズムを、擬似言語のコードで紹介します。各ページの「進む」「再生」で、どの行が実行され、変数がどう変わるかを1行ずつ確かめられます。
線形探索配列の先頭から順に1つずつ比べて、探している値を見つける方法です。見つかったら、その位置(番号)を返します。O(n)二分探索小さい順に並んだ配列で、真ん中の値と比べて探す範囲を半分ずつ狭めていく方法です。O(log n)バブルソート隣り合う要素を比べて、順番が逆なら入れ替える操作を繰り返す整列法です。1周するごとに、一番大きい値が右端に決まります。O(n²)選択ソートまだ並べていない部分から一番小さい値を探し、その部分の先頭と入れ替える操作を繰り返す整列法です。O(n²)挿入ソート左側の整列済みの部分に、次の要素を正しい位置まで差し込んでいく整列法です。トランプの手札を並べるときの動きに似ています。O(n²)最大値を求める配列の先頭の値を仮の最大値にして、残りの要素と順に比べながら、より大きい値が見つかるたびに入れ替えていきます。O(n)階乗(再帰)関数の中で自分自身を呼び出す「再帰」を使って、n! = n × (n−1)! を計算します。O(n)ユークリッドの互除法2つの整数の最大公約数を求める方法です。「大きいほうを小さいほうで割った余り」で置き換える操作を、余りが 0 になるまで繰り返します。O(log n)スタック(配列で作る)配列と「一番上の位置」を表す変数 top を使って、最後に入れたものを最初に取り出す(LIFO)スタックを作ります。push・pop とも O(1)10進数を2進数に変換する10進数を 2 で割った余りを記録しながら、商が 0 になるまで割り続けます。余りを下の桁から順に並べたものが2進数です。O(log n)