Skip to main content

標準スワップとは何ですか?

computerコンピュータープログラミングとコンピューターサイエンスでは、標準スワップは、2つの変数が値を交換する必要があるプログラムの状況であり、値が転送されたときに中間監督として機能するために3番目の変数の作成が必要です。標準スワップはプログラミングパラダイムです。つまり、2つのデータを交換する必要がある状況に適用でき、1つのデータ型またはプログラミング言語に結び付けられていません。値をスワップする必要があるプログラムには多くのインスタンスがありますが、多くの場合、コレクションとアレイの標準コンポーネントであり、ソートアルゴリズムで使用する場合は、コレクションのあるインデックスから別のインデックスのアイテムを移動しなければならない場合、一時変数を使用して、交換される値。ハードウェアの観点から見ると、標準スワップは、整数などの一部のスカラーデータ型でサポートされている低レベルプロセッサ関数になります。つまり、中間値をランダムアクセスメモリ(RAM)で作成して2つの数値を交換する必要はありません。標準スワップの概念は、変数aおよびbで見ることができます。標準スワップの終わりに、BはAに等しく、AはBに等しい必要があります。プログラムが単にBをAに割り当てる場合、Aの値は失われ、後でBに割り当てることはできません。これにはAの使用が必要です。bの値を保持する一時変数bはAに割り当てられます。最終ステップは、一時変数値をbに割り当て、スワップを完了することです。配列またはコレクション。ソートアルゴリズムが、配列インデックス1のデータをインデックス10のデータと交換する必要があると判断した場合、データの標準スワップを実行できます。これは、Cなどの言語でのポインター参照を使用して非常に高速に行うことができます。非常にまれな場合には、オブジェクト参照を交換するだけでは実際のスワップが開始されません。代わりに、オブジェクトを交換する唯一の方法は、2つのオブジェクトと一時オブジェクト変数の間の内部データ、フィールドごとにフィールドをクローンすることです。または(XOR)論理演算子。XORスワップは、2つのビットがXORで計算されると、基本的に一方または両方の演算子で逆にすることができるマスクを作成するという事実に依存しています。このように、2つの変数、AとBは、最初に2つの変数のXORを使用してマスクを作成し、次にXORを使用して最初にBの値をマスクし、次にAの値をマスクすることで交換できます。残念ながら、この方法は回避されますが一時的な変数の作成は、特にaとbが互いに等しい場合、コンパイラの最適化が実際の操作を変更する場合に、すべての場合にスワップを行いません。