swap(値の入れ替え)は言語によっては独自の関数が用意されていることがありますが、かえってそれがアダとなって他言語(swap関数がない言語)で面倒になることがあります。
こう思う方もいるかもしれません。
swapとか簡単すぎて萎えるわw・・・何を今さr(ry ぅ・・あれ・・・何となく・・目眩が・・(保健室)
ということで今回は、どんな言語でも共通のswapの方法を紹介します。むしろ数論(?w)のようなイメージでお読みください。
最後にJavaScriptの簡単なコードもつけてみました。
swapの核心 → 一時変数tmp
swapの核心がtmpと名付けられるような一時変数であることの根拠は、swapをするには少なくとも対象合わせて3つ以上の変数が必要だからです。(2つでできるのがあったらすごいけど..)swapでは、まず一時的に値を保持するための変数(ここではtemporary=「一時の,はかない,仮の」という意味であるtmpを使う)を用意します。色んな名前がありますが、まず頭にのぼるのはtmpかtempです。テンプと呼びます。
1 . tmpにAを代入(Aのコピーを作る)
ここで大事というか頭に浮かべるといいのは、tmpはAのコピーだということです。
2 . AにBを代入
ここから三すくみの図をイメージします。AがBを取りに行くイメージです。これでAの値はBになりました。
3 . Bにtmpを代入
あとはBがAの値を引っ張ってくればいいですが、Aはもうトランスフォームして昔の面影はありません。なので、Aのコピーであるtmpを取りに行きます。
JSでさくっと書いてみると・・・
こんな感じです。
var A = 10;
var B = 30;
console.log(A,B); //10 30
var tmp = A; //1
A = B; //2
B = tmp; //3
console.log(A,B); //30 10
swap標準関数よ、さようなら(?)
スマートではないかもしれませんが、標準関数を使わないで、なるべく同じロジックで書いてみるのもいいかもしれませんね。