
武蔵野個別指導塾の特徴
共通テスト情報I 整列の途中経過—交換の前後を追って一巡後の配列を求める|武蔵野個別指導塾

隣り合う値の交換を追い、等しい値と一巡後の逆順から読み解く整列の途中経過です。
よくあるのは、高校生が数の並びを左から一巡して交換しただけで、全体が小さい順に整ったと判断する場面です。右端に大きな値が移っていても、左側には逆順が残ることがあります。隣り合う2個をどの順に比べ、いつ入れ替えたかを記録すると、一巡後の並びと整列済みの範囲を区別できます。
要点(結論から)
- 比較方向、添字の起点、交換条件を先に確認します。
- 更新後の配列から次の隣接する2個を選びます。
- 一巡後に端の値が決まっても、残りは未整列の場合があります。
一巡のどこを問われるか
出方の1つは、初めの配列と交換の条件を読み、一巡後の配列を答える問題です。比較ごとに配列が変わるので、次の比較には更新後の値を使います。途中で交換が起きなくても、それが一巡の終了を意味するとは限りません。問題に書かれた最後の組まで進めます。
別の型は、比較方向や不等号を変えたときに、どの端にどの値が移るかを考える問題です。左から右へ進むときも、右から左へ進むときも、交換条件を読まずに「最大値が右端」と決めることはできません。さらに、途中の配列から直前に比べた位置や誤った交換を見つける型もあります。どの時点の記録かを添えて判断します。
ここで扱うのは隣接する要素を順番に比較する一巡です。整列の方法を広く覚えるより、与えられた手順の1回ごとの結果を追います。全体が完成するまで何巡必要かという問いでも、まず指定された一巡を正確に読むことが土台です。
隣の2個と一巡の意味
配列は、順番を持つ値の集まりです。位置を示す番号を添字と呼びます。以下の例では左端の添字を1とし、要素数が4なら添字は1から4までです。比較する組を位置で示すと、左から右への一巡は、位置1と2、2と3、3と4の順です。終点を含めて3組です。
図1のように、比較して条件が成り立った場合に交換し、その結果を次の比較へ渡します。成り立たなければ並びを保ったまま次に進みます。比較する値を初めにまとめて選ぶのではなく、直前の操作を終えた配列から取り出します。

例えば左の値が右の値より大きいときに交換するなら、小さい値を左へ、大きい値を右へ動かします。等しいときは「大きい」という条件が偽なので交換しません。これに対して「以上」なら等しい値でも交換します。数だけを見ると同じ並びでも、値に札が付いていれば同じ値の札の順番が変わることがあります。
左から右へこの条件で進むと、各比較の右側には、その時点までに見た値の最大値が残ります。それが次の組の左側として再び比較されるため、最後には元の配列の最大値が右端にあります。ただし、それ以外の値どうしは十分に比較されていないことがあり、残りの並びが整っている保証はありません。重複する最大値があっても、右端に最大値と同じ値が置かれるという説明は変わりません。
基本例題:一巡後を記録する
4枚のカードに書かれた数を、左から順に配列 A に入れます。初めの配列は [5, 2, 4, 1] です。次の自作の手順を1回実行した直後の配列を、左から整数を並べて答えてください。添字は1から始まり、繰り返しの両端を含みます。「←」は右側の値を左側に代入する操作です。交換は2つの値を同時に入れ替えるものとします。
A ← [5, 2, 4, 1]
i を 1 から 3 まで 1 ずつ増やして繰り返す
A[i] が A[i+1] より大きければ、その2つを交換する
A を出力する
まず i が1のとき、位置1と2の5と2を比較します。5は2より大きいので交換し、[2, 5, 4, 1] です。i が2になると、元の配列の2と4ではなく、更新後の位置2と3の5と4を見ます。交換後は [2, 4, 5, 1] です。最後の i が3では5と1を比較し、[2, 4, 1, 5] になります。
図2のように、各行はその比較を終えた直後の配列です。右端には最大値5が到達しますが、位置2と3は4、1の順であり、まだ小さい順ではありません。したがって答えは [2, 4, 1, 5] です。交換の有無だけでなく、出力が繰り返しの外にあることも確認します。途中の配列を答えるのではなく、最後の比較後を答えます。

答えを元のカードに戻して照合すると、1、2、4、5が各1枚で、交換による紛失や増加はありません。この照合だけでは並び順の正しさまでは保証できませんが、書き間違いを見つける助けになります。さらに各行の変化が指定した隣接位置の交換だけで生じたかを確認すると、順番も検証できます。
もし初めから [1, 2, 4, 5] なら3組とも交換しません。それでもこの手順では比較を3回行い、同じ配列を出力します。交換が0回であることと比較が0回であることは別です。処理に「交換がなければ終了」という指示はありません。
方向と等号を変えて読む
今度は札付きの5個の値 [3A, 1B, 3C, 2D, 1E] を考えます。数字が比較する値、英字が札の名前です。左端を位置1とし、位置4と5から始めて、3と4、2と3、1と2の順に比較します。左の値が右の値より大きい場合に2枚を交換します。値が等しければ交換しません。一巡後の札付きの並びを答えてください。
最初は2Dと1Eなので交換し、[3A, 1B, 3C, 1E, 2D] です。次は3Cと1Eを交換し、[3A, 1B, 1E, 3C, 2D] です。位置2と3は1Bと1Eで等しいため、そのままです。最後に3Aと1Bを交換し、[1B, 3A, 1E, 3C, 2D] となります。
右から左へ進むため、各比較で小さい値が左側へ運ばれ、左端には最小値1が置かれます。しかし位置2と3には3と1が残るので、全体はまだ整列していません。最小値が複数あることと、どの札が左端に来るかは別の問いです。等しい1Bと1Eを交換しない条件だから、ここでは1Bが先に残ります。
同じ初期配列と方向で、条件を「左の値が右の値以上」に変更するとどうなるでしょうか。最初の2回は同じですが、位置2と3の等しい1Bと1Eを交換します。最後に3Aと1Eを交換するので、結果は [1E, 3A, 1B, 3C, 2D] です。数字だけでは [1, 3, 1, 3, 2] と同じでも、札の並びは違います。不等号に等号が付くかどうかは、重複のある入力で確かめられます。
配列の要素数が1なら隣接する組はありません。一巡の比較は0回で、その要素はそのままです。空の配列も、隣接する組がないものとして扱うと明記された問題なら、比較0回で空のままです。ただし、空の配列の端に最大値があるとは言えません。問題が空入力の扱いを定めていなければ、勝手に結果を補わず、与えられた入力範囲で考えます。
誤答を途中の行から直す
基本例題で「一巡後は [1, 2, 4, 5]」と答える誤りを考えます。これは完成した小さい順の並びであり、カードの数も合っています。しかし、指定された一巡の途中経過には現れません。図3のように、最後の交換後に残る4と1の逆順が、誤りを見つける手掛かりです。

原因は、最大値が右端へ移る性質を、すべての位置が確定する性質へ拡張したことです。位置2と3の比較が終わった後、位置3に1が移ってきたため、4と1はこの一巡では比較されません。次の巡を行う指示がない以上、その2個を入れ替えることはできません。直すには最後の比較直前 [2, 4, 5, 1] に戻り、位置3と4だけを交換します。
別の誤りは、毎回初めの配列から比較することです。位置2と3を元の2と4で比べれば交換しないことになりますが、実際の位置2には前の操作で5が入っています。比較対象を位置で指定し、表の直前の行から値を読むように直します。数字だけを頭の中で移すより、交換しなかった位置も含めて毎行を書き残すと原因を探しやすくなります。
手を動かす4問
以下はそれぞれ独立した問題です。添字は1から始まり、指定した各組を順に1回ずつ比較します。交換は札や値を同時に入れ替えます。各答えは並びを左から書き、回数は整数で答えてください。
- 配列 [6, 3, 5, 2] を左から右へ一巡します。左の値が右の値より大きければ交換します。一巡後の配列と交換回数を答えてください。
- 配列 [4, 2, 6, 3] を右から左へ一巡します。左の値が右の値より大きければ交換します。一巡後の配列と交換回数を答えてください。
- 配列 [2P, 2Q, 1R] を左から右へ一巡します。左の値が右の値以上なら交換します。英字は札の名前で、数字だけを比較します。一巡後の札付き配列と交換回数を答えてください。
- 要素数が1の配列 [7] に、左から右へ隣接する組を比較し、左が大きければ交換する一巡を適用します。一巡後の配列と比較回数を答えてください。
答えとたどり方
-
答えは [3, 5, 2, 6]、交換3回です。6と3を交換して [3, 6, 5, 2]、6と5を交換して [3, 5, 6, 2]、6と2を交換して [3, 5, 2, 6] です。初めの4個が各1個ずつ残り、最大の6が右端です。5と2は逆順なので、一巡で完成とは言えません。
-
答えは [2, 4, 3, 6]、交換2回です。まず6と3を交換して [4, 2, 3, 6]、次に2と3は交換せず、最後に4と2を交換します。右から左へ動く最小値2に注目し、交換しない比較も回数に数えると、比較3回のうち交換2回と整理できます。元の4個もそのまま残っています。
-
答えは [2Q, 1R, 2P]、交換2回です。最初の2Pと2Qは等しいものの、以上という条件を満たすため交換して [2Q, 2P, 1R] です。次に2Pと1Rを交換します。等号を落とすと札の順序を誤ります。3枚の札を元の並びと照合すると、それぞれ1枚ずつ残ります。
-
答えは [7]、比較0回です。隣の要素がないため交換も0回です。位置1と2を比較しようとすると存在しない位置を参照するので、組の範囲を作る段階で止まります。元の1個がそのまま残り、条件による交換は発生しません。
記録が合わないときの点検
追跡表の各行は、前後の行を比べて確かめます。交換した行では指定された2位置の値が入れ替わり、その他の位置は変わりません。交換しなかった行では配列全体が同じです。基本例題の2回目に [2, 5, 4, 1] から [4, 2, 5, 1] へ変わったと記録したなら、位置1まで動いているため、指定の操作と一致しません。正しい組は位置2と3です。
比較の回数も点検できます。4個を左から右へ隣接比較すると組は3つです。位置4と5を加えると存在しない要素を参照します。反対に位置2と3で止めれば最後の組を比較していないので、一巡の答えにはなりません。途中の行が与えられる問題では、何回目の比較を終えた行かも読みます。
処理が失敗する状況も区別して考えます。値が欠けた入力を受け取ったとき、数として比較できるかはこの手順で決めていません。欠けた値を0に置き換えれば結果が変わるため、それを正解と決めることはできません。処理を実行する道具が途中で止まった場合も、表示された行が一巡の終わりなのか、何回目までの記録なのかを確認します。途中で止まった記録から残りの処理を再開するには、その時点の配列と次に比較する位置が必要です。時間切れや例外でそれらが得られない場合は、元の入力からやり直すか、問題に与えられた対応を使います。
これらの点検は手計算にも役立ちます。空欄を見つけたら値を想像して埋めず、問題文に戻って初期値を確認します。数の並びが残っていても比較位置が不明なら、どの操作まで終えたかが確定しません。初期配列と操作順がそろっていれば、各行を再現して答えを照合できます。正常な入力では最後までの記録を確認し、途中で記録が途切れた場合には答えの範囲を限定します。
要点を手元に残す
- 比較方向、添字の起点、交換条件を先に確認します。
- 更新後の配列から次の隣接する2個を選びます。
- 一巡後に端の値が決まっても、残りは未整列の場合があります。
- 等しい値と、比較する組がない入力も条件に戻します。
どの行で迷ったかを確かめる
個別指導で確かめるなら、答えだけでなく比較ごとの表を見ます。比較位置は正しいのに値が違う場合は、直前の交換後の行へ戻ります。値は正しいのに交換の判断が違う場合は、等号を含むかを条件と照らします。最後の配列だけが完成形になっている場合は、一巡に含まれる最後の組と出力位置を指でたどります。
手順が途中で止まる、データが壊れている、外の道具が結果を返さないといった場合は、この自作手順には対応が定義されていません。完成した配列や途中の値を推測せず、入力と実行状態を確認して扱いを定めてからやり直します。条件がそろっている場合には、各比較を元の並びに戻して照合できます。整列の途中経過は、どの比較が終わったかを添えることで読めます。
もう「日東駒専」を目標にしないでください。
武蔵境駅徒歩30秒、講師1人に生徒1人の完全1対1。授業のあいだ、先生は隣を離れません。いまの詰まりを、無料相談でそのまま話してください。
まず15分だけ電話で話したい方は、無料電話相談(15分)から。塾からお電話を差し上げます。
本気になった日が、入塾の日。
お子様の教育、迷ったら「丸投げ」してください。必ず、期待以上の結果で返します。武蔵野で育む、武蔵境で学ぶ。
電話は年中無休。365日、24時間、お電話可能。




