ゼロから始める資格学習
全23章・シラバス6.5保存した教材
← 第14章「アルゴリズムとプログラミング」の目次へ
14-08 · アルゴリズムとプログラミング5節・復習・4問

並べ替えの途中を追う

このパートで確かめること
  • 選択ソートの一回の交換を追う
  • 途中の出力と整列完了を区別する
  • 併合で移した列だけを進める
  • 隣接交換と基準値による分割を識別する
表示・保存
説明 1 / 5
このページの目次 5節・復習と4問
  1. 1説明を読む
  2. 2復習する
  3. 3問題を解く
  4. 4次へ進む

1選択ソートは未整列部分の最小値の位置を探す

整列(ソート)は、値を昇順や降順へ並べ替える処理です。昇順の選択ソートでは、まだ整列していない部分から最小値を探し、その部分の先頭の値と交換します。1回終わるたびに、左端から一つずつ値の位置が確定します。

位置を表す変数で読むと、jは今回確定させる位置、kは比較中の位置、minIndexはそこまでで見つけた最小値の位置です。minIndexへ最小値そのものを入れるのではありません。配列添字を1から数えるとき、[7,4,6,2,5]では、最初はj=1、minIndex=1です。

k=2の値4は値7より小さいのでminIndexを2へ、k=4の値2は値4より小さいので4へ更新します。

末尾まで比較した後、j=1とminIndex=4の要素を交換すると[2,4,6,7,5]になります。次は位置2以降だけを調べます。位置2の値4が既に最小なので、配列が変わらないまま2回目が終わります。まだ7と5が逆順です。

「今回交換して見た目が変わらなかった」と「全体が整列済み」は分けて判断します。

位置の変数と交換結果(添字は1から)
時点minIndex配列・判断
j=1で比較開始1[7,4,6,2,5]
k=2を比較2値4が値7より小さい
k=4を比較4値2が値4より小さい
末尾まで比較して交換4[2,4,6,7,5]
j=2の回が終了2[2,4,6,7,5]。全体の整列は未完了

minIndexは値ではなく位置。表の各行は同じ種類の1回を数えているわけではありません。

ハルとビットで、使い方を確かめよう

ハル

2回目で同じ並びなら終わった?

ビット

一つの位置が確定しただけかもしれないよ。未整列部分も見よう。

2バブルソートは隣同士を交換する

バブルソートは隣接する値を比較し、昇順に反していたら交換する処理を繰り返します。[3,1,4,2]なら最初の一巡で[1,3,4,2]→[1,3,2,4]となり、大きい4が右端に移ります。

一巡しただけでは中央の3と2が逆なので未完了です。次の比較・交換で[1,2,3,4]となります。「途中まで」と「全反復終了後」、比較の向きと交換条件を分けて読みます。

一巡で大きい値を右へ
比較交換後理由
3と11,3,4,23>1
3と41,3,4,23<4なので維持
4と21,3,2,44>2

上から順に確認しよう。

3整列済みの二つの列を併合する

併合(マージ)は、二つの整列済みの列を、一つの整列済みの列へまとめる処理です。昇順なら両方の先頭を比べ、小さい方を結果へ移します。移した列だけを一つ先へ進め、同じ比較を繰り返します。

[1,4]と[2,3]なら、まず1と2を比べて1を取り出します。次は4と2を比べて2、続いて4と3を比べて3を取り出します。一方の列が空になったら、他方に残る4を付け加えて[1,2,3,4]です。単に二つの列をつないだ[1,4,2,3]では昇順になりません。

整列済み列を併合
入力

1,4 と 2,3

先頭を比較

小さい1、2、3を順に選ぶ

残りを追加

4を付けて1,2,3,4

数値は学習用の例。

4見た目が整っても指定された手順は続く

終了条件が「未処理の要素がなくなるまで」なら、最後の1要素も処理したと数えます。4個の配列で毎回一つ最大値を対象から除くなら対象数4→3→2→1→0で4回です。

実装によっては残り1個で止めても整列できますが、問題が指定する反復の回数はその条件で数えます。2回で止める、整った3回で止める、空になった後に5回目を数えるという読み違いを防ぎます。

空になるまで1個ずつ処理
実行回数処理前の個数処理後の個数
143
232
321
410

上から順に確認しよう。

ハルとビットで、使い方を確かめよう

ハル

最後の一つは比べなくてもいい?

ビット

省略できる実装もあるけれど、指定された終了条件どおりに数えよう。

5クイックソートの分割をたどる

クイックソートでは基準値を選び、その値より小さい側と大きい側に分けた後、各側にも同じ考え方を適用します。例えば[4,2,5,1,3]で3を基準にすると、小さい側は[2,1]、大きい側は[4,5]に分けられます。

小さい側を[1,2]、大きい側を[4,5]に整列すれば、全体は[1,2,3,4,5]になります。

この並びは分割の考え方を示す一例です。途中の要素交換の順番や基準値の選び方は実装で異なります。同じ値が複数ある場合も、その値をどちらへ置くか、又は等しい値をまとめるかなどの規則が必要です。指定された手順を読む問題では、最終結果が昇順になるという知識だけで途中の配列を決めないようにします。

2

復習

このレッスンを振り返ろう

最小値を先頭へ移すとき、他の全要素も動く?

答え方と、確認するポイント

指定された二つの位置を交換し、他の位置は変えません。

交換して配列が変わらなければ、全体も終了?

答え方と、確認するポイント

その回の対象が既に正しい位置の場合があります。指定された終了条件まで追います。

先頭の小さい値を移した後、両方の列を進める?

答え方と、確認するポイント

移した側だけを進め、残る先頭同士を比べます。

バブルソートとクイックソートの判断の違いは?

答え方と、確認するポイント

前者は隣同士の比較と交換、後者は基準値による分割です。

3

問題で確かめる

実際の問題に挑戦しよう

IPA(独立行政法人 情報処理推進機構)公開過去問1問、入門の確認問題3問で、この範囲の考え方を使います。答えを選んだら、正解の理由とほかの選択肢の違いも確かめましょう。

オリジナル入門問題1 / 4問
昇順の選択ソートで[4,2,3,1]の最小値を先頭と交換した。1回後はどれか。
ヒントを見る

選択ソートは端の値を確定するで、条件と手順を確認しよう。

オリジナル入門問題 · シラバス 6.5

公開問題・原図の著作権はIPAにあります。表記・表の配置を整えています。解説は当サイト独自のものです。

4問中0問の答えと解説を確認しました。選んだ答えの理由も確かめてから、次へ進みましょう。

自作解説 · 2026.09.15 確認
出典・参考資料を確認する

学習範囲:IPA シラバス Ver.6.5 ↗ 項目37。身近な例・会話・図解・確認問題は当サイトのオリジナルです。

学習範囲と参考資料

シラバスは学習範囲の根拠です。説明・図の数値・身近な事例は学習用に作成しています。2026年9月14日確認。

3問 / 操作体験

模試の操作を試す

解答から結果の確認までを、3問で体験できます。100問・120分の第1模試も無料で利用できます。