擬似コードで学ぶ、配列の要素を入れ替える基本アルゴリズム

前回の学習

前回は「2つの変数の中身を入れ替える」方法を学びました。

今回はそれを一段レベルアップさせて、

配列の中の要素を入れ替える

という、科目Bで頻出かつ実務でも必須のテーマを扱います。


配列とは「番号付きの変数の集まり」

まず前提の整理です。

A[1] = 10
A[2] = 20
A[3] = 30

これは、

  • A[1], A[2], A[3]
  • それぞれが 独立した変数

と考えてOKです。

👉 配列の要素を入れ替える = 変数の入れ替えを番号付きで行う


例題:配列 A の 1番目と 3番目を入れ替える

初期状態

A[1] = 10
A[2] = 20
A[3] = 30

よくある間違い(変数と同じ)

A[1] ← A[3]
A[3] ← A[1]

なぜダメ?

  • 1行目で A[1] の元の値が消える
  • 2行目では、すでに失われた値を参照している

👉 必ず一時変数が必要


正しい擬似コード(王道)

TEMP ← A[1]
A[1] ← A[3]
A[3] ← TEMP

処理の流れを表で確認

手順処理内容A[1]A[2]A[3]TEMP
初期102030
TEMP ← A[1]10203010
A[1] ← A[3]30203010
A[3] ← TEMP30201010

👉 配列の要素が正しく入れ替わった


インデックスが変数になるケース(科目Bで頻出)

試験では、番号が直接書かれず、

変数 i, j を使う形がよく出ます。

TEMP ← A[i]
A[i] ← A[j]
A[j] ← TEMP

意味

  • 配列 A の i 番目と j 番目を入れ替える
  • 並び替え(ソート)アルゴリズムの基本部品

for 文と組み合わさると何が起きる?

例えば次のようなコード。

for i ← 1 to 4
  TEMP ← A[i]
  A[i] ← A[5 - i]
  A[5 - i] ← TEMP
endfor

これは何をしている?

  • 1番目 ↔ 4番目
  • 2番目 ↔ 3番目

👉 配列の前後を入れ替える(逆順)処理


基本情報技術者試験でのチェックポイント

出題側が見ているポイント

  • 添字(インデックス)を正しく追えるか
  • 一時変数の役割を理解しているか
  • 処理後の配列の状態を答えられるか

初学者がやりがちなミス

  • 添字を途中で取り違える
  • 代入の向きを逆に読む
  • 「頭の中だけ」で追って混乱する

👉 紙に配列を書いて1行ずつ追うのが最強


C# との対応(参考)

int temp = A[i];
A[i] = A[j];
A[j] = temp;
  • 擬似コードと考え方は完全に同じ
  • 擬似コードが読めれば、実装は怖くない

まとめ

  • 配列の要素入れ替えは 変数の入れ替えの応用
  • 必ず 一時変数 を使う
  • 科目Bでは「処理を追える力」が問われる
  • ソート・逆順・探索の基礎部品になる

訪問数 3 回, 今日の訪問数 3回