我尝试将矩阵水平/垂直旋转,不知道如何搜索,在这里搜索后,我发现每个人都将其除以2,我真的想知道为什么它如此重要,以至于如果我不做矩阵将保持不变, 我们将行划分为2的示例:
int temp;
for (int i = 0 ; i < getRows() / 2 ; i++)
{
for (int j = 0; j < getColumns() ; j++)
{
temp = _matrixArray[i][j];
_matrixArray[i][j] = _matrixArray[_matrixArray.length - 1 - i][j];
_matrixArray[_matrixArray.length - 1 -i][j] = temp;
}
}
谢谢。
答案 0 :(得分:2)
希望我能正确理解您的问题,我可以说原因是下一个问题:您可以通过两种方式同时从矩阵读取数据,即从左到右(0到n / 2)和从右到左(n到n / 2 + 1),并逐步交换这两部分(0与n-1,1与n-2,...,nk与n-k + 1),因此,当其大小达到一半时,您已经全部交换了,这意味着您执行了轮换
答案 1 :(得分:1)
您在此处复制的代码通过遍历行0 ... [n / 2]并与行[n / 2] ... n-1进行交换,从而进行了垂直反射。我使用方括号[]表示四舍五入。那么,您是否看到循环只需要上升到[n / 2]?