目前,我正在使用逐个元素交换的迭代方法,这似乎非常低效。是否可以在常数时间内交换两个二维数组?
int a[20][100];
int b[20][100];
我想在 O(1) 中交换 a
和 b
。
此外,如果我只想将 b
覆盖为 a
,是否可以应用相同的解决方案?
下面是我用来用“b”迭代覆盖“a”的代码。
下面的代码用于用 b 覆盖 a:
for(x = 0;x<row;x++){
for(y=0;y<col;y++){
a[x][y] = b[x][y];
}
}
下面是我用来交换 a 和 b 的代码:
for(x = 0;x<row;x++){
for(y=0;y<col;y++){
temp = a[x][y];
a[x][y] = b[x][y];
b[x][y] = temp;
}
}
您需要将它们存储为指针。例如:
int a_store[20][100];
int b_store[20][100];
int (*a)[20][100] = &a_store;
int (*b)[20][100] = &b_store;
现在很容易交换它们。您也可以在堆上分配它们,或在 C++ 中使用 std::vector
。
我是一名优秀的程序员,十分优秀!