为什么元素不会被交换
public static void SwapArray(int[,] arr)
{
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(0); j++)
{
int temp = arr[i, j];
arr[i, j] = arr[j, i];
arr[j, i] = temp;
}
}
}
Run Code Online (Sandbox Code Playgroud)
即使参数没有ref修饰符,数组也不会改变.引用的副本作为参数传递对吗?
Jen*_*ens 21
您的算法中存在错误.对于每一个i和j,你的循环交换arr[i,j]
和arr[j,i]
的两倍.
例如arr[3,1]
,arr[1,3]
对于i = 3,j = 1 进行一次交换,对于i = 1 进行一次交换,j = 3.结果是原始矩阵.你应该将j-loop更改为
for (int j = 0; j < i; j++)
Run Code Online (Sandbox Code Playgroud)