擬似コードで学ぶ、2つの変数の中身を入れ替える基本アルゴリズム

プログラミング学習の初期や、基本情報技術者試験(科目B)では、

「2つの変数の値を入れ替えなさい」

という問題が非常によく登場します。

これは単なるテクニックではなく、

「変数」「代入」「一時保存」の理解度を測る定番テーマです。


なぜそのまま代入してはいけないのか?

まず、よくある間違いを見てみましょう。

NG例(直感的だが間違い)

A ← B
B ← A

なぜダメ?

  • 1行目で、Aの中身が 上書きされて消える
  • 2行目では、すでに元のAの値は存在しない

👉 元の値を一時的に避難させる場所が必要になります。


正しい考え方:一時変数を使う

ポイント

  • 入れ替えには 3つ目の変数(作業用) を使う
  • これは試験でも、実務でも、教育現場でも王道

擬似コードでの正しい書き方

例:変数 A と B の中身を入れ替える

TEMP ← A
A ← B
B ← TEMP

処理の流れ

手順処理内容ABTEMP
初期状態1020
TEMP ← A102010
A ← B202010
B ← TEMP201010

👉 元の値を失わずに入れ替え成功


図で考える(イメージ)

初期状態

A → 10
B → 20
  • A と B はそれぞれ別の箱
  • 中身(値)だけを入れ替えたい

手順①:A を一時変数に退避

TEMP → 10
A    → 10
B    → 20
  • TEMP は避難用の箱
  • ここで「元の A の値」を守る

手順②:B を A にコピー

TEMP → 10
A    → 20
B    → 20
  • A の中身は B と同じになる
  • まだ入れ替えは完了していない

手順③:TEMP を B に戻す

TEMP → 10
A    → 20
B    → 10
  • 元の A の値を B に戻す
  • ここで完全に入れ替え完了

基本情報技術者試験での出題ポイント

よく問われる観点

  • 擬似コードの 代入の向き(←)
  • 処理順序を正しく追えるか
  • 一時変数の役割を理解しているか

試験対策のコツ

  • 「入れ替え=一時変数が必要」と即座に思い出す
  • 途中状態を書き出して追う癖をつける
  • 頭の中だけで処理しようとしない

C#などの実際の言語との対応(参考)

擬似コードで理解できていれば、

実際の言語に置き換えるのは簡単です。

int temp = a;
a = b;
b = temp;

👉 考え方は擬似コードと全く同じ


まとめ

  • 変数の入れ替えは 超重要な基礎アルゴリズム
  • 直接代入ではなく 一時変数を使う
  • 擬似コードで理解できれば、どの言語でも応用可能
  • 科目Bでは「読める・追える」ことが最優先

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