(Java Editionの)アルゴリズム - 変数の値とスイッチングアレイは、データ要素の交換位置の2つの基本的なタイプであります

要素位置(測位計算方法と補助空間法)アレイを切り替えます

アルゴリズムでは、多くの場合、問題または問題の配列要素内の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演算(^)を使用して補助省スペース、空間的な複雑さを軽減

公開された14元の記事 ウォン称賛7 ビュー2892

おすすめ

転載: blog.csdn.net/qq_42937522/article/details/104501889