C++におけるいくつかのデータ交換方法の効率比較
1664 ワード
2つのデータ交換はプログラミングでよく使用されます.たとえば、ソートアルゴリズムでよく使用されます.次に、よく使用される3つの方法を紹介し、交換に多く使用されるプログラムで効率を向上させるために、それらの効率を比較します.
交換する2つのデータがdata_であると仮定します.1とdata_2
1つ目の方法は、一時tempを使用します.コードは次のとおりです.
第2の方法は,追加の記憶領域を直接用いずに2つのデータ上で直接動作するが,この方法は2つの数を加算する際に境界を越える問題を生じる可能性がある.コードは次のとおりです.
交換する2つのデータがdata_であると仮定します.1とdata_2
1つ目の方法は、一時tempを使用します.コードは次のとおりです.
temp = data_1;
data_1 = data_2;
data_2 = temp;
第2の方法は,追加の記憶領域を直接用いずに2つのデータ上で直接動作するが,この方法は2つの数を加算する際に境界を越える問題を生じる可能性がある.コードは次のとおりです.
// data_11 = data_1, data_22 = data_2
//data_1 = data_11 + data_22
//data_2 = data_11 + data_22 - data_22 = data_11
//data_1 = data_11 + data_22 - (data_11 + data_22 - data_22) =data_22
data_1 = data_1 + data_2;
data_2 = data_1 - data_2;
data_1 = data_1 - data_2;
, :
data_1 ^= data_2;
data_2 ^= data_1;
data_1 ^= data_2;
に、 テストを い、 について、 の を い、 を します.コードは の りです.const int num = 100000000;
int main(int argc, char **argv)
{
int data_1 = 1234, data_2 = 5678, temp = 0;
clock_t start = 0, finish = 0, duration = 0;
// 50 ,
for (int i=0; i<50; ++i)
{
start = clock();
for (int i=0; i
:
1つ の : 334ミリ
2つ の : 879ミリ
3つ の : 799ミリ
その , 1の は も であり, 1の は なメモリ を めているが, された3 のコードはいずれも であり, に の2つの と あるいはより いことが かった.したがって, が きい は, 1の が され, が く, も しやすい.