正解は ア
シェルソートは、一定間隔Hだけ離れた要素同士をグループにして挿入法で整列し、間隔Hを徐々に縮めながら整列を繰り返すアルゴリズムです。最初は大きな間隔で大まかに整列し、間隔を狭めていくことで挿入法の弱点(遠くの要素の移動が遅い)を補い、効率を高めます。本問では9個のデータ列に対し、手順(1)でH=[データ数÷3]=[9÷3]=3と初期化します。手順(3)を実行するたびにHが[H÷3]で更新され、手順(4)でH=0になれば完了します。実際に追跡すると、(1)でH=3→(2)で間隔3の整列→(3)でH=[3÷3]=1(1回目)→(4)はH=1≠0なので(2)へ戻る→(2)で間隔1の整列→(3)でH=[1÷3]=[0.33]=0(2回目)→(4)はH=0なので完了。したがって手順(3)を実行した回数は2回であり、選択肢aが正解です。最後はH=1(隣接要素の単純な挿入法)になるため、必ず完全に整列が完成することが保証される点も、シェルソートの仕組みを理解するうえで重要なポイントです。
シェルソートはHの遷移を順に書き出すのが確実。H=[データ数÷3]から始め、[H÷3]を繰り返してH=0で終了。手順(3)の実行回数=Hが0に至るまでの更新回数。最後はH=1で必ず整列が完成する。