シェルソートにおける間隔Hの更新回数

正解は ア (2回)です。 データは9個なので、手順(1)で H=[9÷3]=3 から始まります。手順(3)で H を3で割り(切捨て)、0 になったら終了します。 手順(3)が実行されるたびに H がどう変わるか を追います。 順番 実行する手順 H 1 (1) H ← [9÷3] 3 2 (2) 3つおきの部分列を整列 3 3 (3) H ← [3÷3](1回目) 1 4 (4) H≠0 なので (2) へ 1 5 (2) 全体を挿入法で整列 1 6 (3) H ← [1÷3](2回目) 0 7 (4) H=0 なので完了 0 手順(3)は 2回 実行されます。データの並び(7, 2, 8, …)は回数に影響せず、データ数だけで決まります。

次の手順はシェルソートによる整列を示している。データ列 7,2,8,3,1,9,4,5,6 を手順 (1)~(4) に従って整列するとき,手順 (3) を何回繰り返して完了するか。ここで,[[ \quad ]] は小数点以下を切り捨てた結果を表す。 〔手順〕 (1) “H←[データ数÷3]H \leftarrow [\text{データ数} \div 3]” とする。 (2) データ列を,互いに HH 要素分だけ離れた要素の集まりから成る部分列とし,それぞれの部分列を,挿入法を用いて整列する。 (3) “H←[H÷3]H \leftarrow [H \div 3]” とする。 (4) HH が 0 であればデータ列の整列は完了し,0 でなければ (2) に戻る。

出典平成31年 春期 応用情報技術者試験 午前 問6
ア
2
イ
3
ウ
4
エ
5