要素位置(測位計算方法と補助空間法)アレイを切り替えます
アルゴリズムでは、多くの場合、問題または問題の配列要素内の2つの交換位置に遭遇する変数の値は、データの2つの基本的な種類を交換しました
補助空間法
変数の二つの基本的なデータ型を交換
int a=1,b=2;
int tmp=a;
a=b;
b=temp;
//此时a=2,b=1
配列の要素の交換位置
public static void swap(int[] arr, int i, int j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
ビットコンピューティング方法
ビット排他的論理和演算(^)
運用ルール
同じ0と比較した場合、2つのバイナリに数、および比較的高いから始め、1は同じではありませんでした。
例えば:^ 11 8
8バイナリが:.高次の比較が得られるバイナリ1000,11 1011に変換される10進数0011バイナリ、次いで、Integer.parseInt(「0011」、2)である = 3。
変数の二つの基本的なデータ型を交換
int f = 50; //二进制 110010
int g = 60; //二进制 111100
f = f^g; //110010,111100——>001110
g = f^g; //001110,111100——>110010 ——>50
f = f^g; //001110,110010——>111100 ——>60
System.out.println(f+" "+g);//输出结果是:60 50
配列の要素の交換位置
public static void swap(int[] arr, int i, int j) {
arr[i] = arr[i] ^ arr[j];
arr[j] = arr[i] ^ arr[j];
arr[i] = arr[i] ^ arr[j];
}
どちらの方法の比較
ビットごとのXOR演算(^)を使用して補助省スペース、空間的な複雑さを軽減