对于一个M*N的矩阵,现将其存储在一个一维数组中,数组长度 M*N,现要实现将该矩阵转置;
要求:
1、空间复杂度要求O(1);
算法实现:
#include <iostream>
using namespace std;
#define M 2
#define N 3
int arr[M*N] = {1,2,3,4,5,6};
void swap(int &a,int &b)
{
a=a^b;
b=a^b;
a=a^b;
}
void travase(int a[] , int x ) //数组起始地址,数组长度,数组 循环右移多少位
{
int i=0;
int j=x-1;
while(i<j)
swap(a[i],a[j]),i++,j--;
}
void movedata(int a[] ,int x)
{
if(x == 1 )
return ;
travase(a,x-1);
travase(a,x);
}
void transposeInpalce()
{
int from , to, offset ,step;
int i,j;
step = N;
to=offset = 0