JAVA交換の2つの数でよく使われる3つの方法
14471 ワード
JAVA交換の2つの数でよく使われる3つの方法中間変数法 数学演算法 数学演算法 第1種、中間変数法
全体の考え方:2つの整形変数aとbがあって、まずaを3番目の変数cに払って、このようにaは記憶して、だからbを言ってaに与えて、更にcを言ってbに与えて、交換を完成して、コードは以下の通りです:
出力結果:
第2種、数学演算法
全体的な考え方:まず2つの変数aとbの和をそのうちの1つの変数(例えばa)に与え、もう1つの変数bは第1の変数(すなわちb=a-b)に等しく減算し、変数aはa-bに等しく、コードは以下の通りである.
実行結果は次のとおりです.
第3種、異或運アルゴリズム(整数のみに有用!)
これはコードで説明されています.コードは次のとおりです.
実行結果は次のとおりです.
ではどう理解しますか!まず異或演算を解決します.つまり^演算に参加する2つのデータは、バイナリビットで「排他的OR」演算 を行う.例えば、2^4は、2のバイナリが0000 0014のバイナリが0000 0100である場合、または演算はバイナリが同じ0であり、異なる場合は1である.2^4=0000 0110=6故
これを理解して、それではこの注釈付きのコードを見てきっと大丈夫です!!
//Are you ok??
suo,
全体の考え方:2つの整形変数aとbがあって、まずaを3番目の変数cに払って、このようにaは記憶して、だからbを言ってaに与えて、更にcを言ってbに与えて、交換を完成して、コードは以下の通りです:
public static void main(String[] args) {
int a = 2;
int b = 4;
int c = a;// a c
System.out.print(" a " + a);
System.out.println("; b " + b);
a = b;
b = c;
System.out.print(" a " + a);
System.out.print("; b " + b);
}
出力結果:
a 2; b 4
a 4; b 2
第2種、数学演算法
全体的な考え方:まず2つの変数aとbの和をそのうちの1つの変数(例えばa)に与え、もう1つの変数bは第1の変数(すなわちb=a-b)に等しく減算し、変数aはa-bに等しく、コードは以下の通りである.
public static void main(String[] args) {
int a = 2;
int b = 4;
System.out.print(" a " + a);
System.out.println("; b " + b);
a = a + b;
b = a - b;
a = a - b;
System.out.print(" a " + a);
System.out.print("; b " + b);
}
実行結果は次のとおりです.
a 2; b 4
a 4; b 2
第3種、異或運アルゴリズム(整数のみに有用!)
これはコードで説明されています.コードは次のとおりです.
public static void main(String[] args) {
int a = 2;
int b = 4;
System.out.print(" a " + a);
System.out.println("; b " + b);
a = a ^ b;//^
b = a ^ b;//
a = a ^ b;
System.out.print(" a " + a);
System.out.print("; b " + b);
}
実行結果は次のとおりです.
a 2; b 4
a 4; b 2
ではどう理解しますか!まず異或演算を解決します.つまり^
a = a ^ b a = 2 ^ 4 = 6
同理:b = a ^ b a = 6 ^ 4 = 0000 0110 ^ 0000 0100 = 0000 0010 = 2
a = a ^ b a = 6 ^ 2 = 0000 0110 ^ 0000 0010 = 0000 0100 = 4
このように交換が完了したのではないか.これで理解できないなら、次はもっと理解できるQQQがあります!!!まず、異或演算は交換法則と結合法則を有し、上のコード: int a = 2;
int b = 4;
System.out.print(" a " + a);
System.out.println("; b " + b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.print(" a " + a);
System.out.print("; b " + b);
a = a ^ b
b = a ^ b= a ^ b ^ b
b ^ b ;
b = a ^ b = a ^ b ^ b = a ^ (b ^ b)
, 0, b b
b b , 0, b ^ b = 0;
b = a ^ b= a ^ b ^ b = a ^ 0
,0 a ,a 1 0 1,
0 0 0, a。
b = a ^ b= a ^ b ^ b = a ^ 0 = a = 2
これを理解して、それではこの注釈付きのコードを見てきっと大丈夫です!!
public static void main(String[] args) {
int a = 2;
int b = 4;
System.out.print(" a " + a);
System.out.println("; b " + b);
a = a ^ b;//^
b = a ^ b;//b = a ^ b= a ^ b ^ b = a ^ 0 = a = 2
//
a = a ^ b;// a = a ^ b= a ^ b ^ a = (a ^ a) ^ b = b = 4
System.out.print(" a " + a);
System.out.print("; b " + b);
}
//Are you ok??