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