擬似コードで学ぶ、配列の要素を入れ替える基本アルゴリズム
前回の学習
前回は「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 |
|---|---|---|---|---|---|
| 初期 | 10 | 20 | 30 | ― | |
| ① | TEMP ← A[1] | 10 | 20 | 30 | 10 |
| ② | A[1] ← A[3] | 30 | 20 | 30 | 10 |
| ③ | A[3] ← TEMP | 30 | 20 | 10 | 10 |
👉 配列の要素が正しく入れ替わった
インデックスが変数になるケース(科目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回


ディスカッション
コメント一覧
まだ、コメントがありません