原地矩阵转置算法实现
2012-09-27 17:34
148 查看
对于一个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;
for(i=0; i< N ;i++)
{
for( j=0 ,from = i+offset; j<M ;j++)
{
movedata(arr+to,from-to+1);
from += step;
to++;
}
step--;
offset += M-1;
}
}
void print()
{
int i=0;
for(i=0;i<M*N;i++)
cout<<arr[i]<<" ";
cout<<endl;
}
int main()
{
cout << "Hello world!" << endl;
print();
transposeInpalce();
print();
return 0;
}
转置的思想来源:http://www.qiyeku.com/xinwen/1182832.html
要求:
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;
for(i=0; i< N ;i++)
{
for( j=0 ,from = i+offset; j<M ;j++)
{
movedata(arr+to,from-to+1);
from += step;
to++;
}
step--;
offset += M-1;
}
}
void print()
{
int i=0;
for(i=0;i<M*N;i++)
cout<<arr[i]<<" ";
cout<<endl;
}
int main()
{
cout << "Hello world!" << endl;
print();
transposeInpalce();
print();
return 0;
}
转置的思想来源:http://www.qiyeku.com/xinwen/1182832.html
相关文章推荐
- C++实现矩阵原地转置算法
- C++实现矩阵原地转置算法
- 稀疏矩阵基于“三元组”的转置算法实现
- 矩阵原地转置算法
- 【数据结构与算法】数组应用2:矩阵转置(Java实现)
- Java进阶(四十九)实现矩阵秩的求解-转置-行列式-逆矩阵操作
- C#实现矩阵转置的方法
- 38. 编写函数,实现B=A+A',即把矩阵A加上A转置,存放在B中
- 稀疏矩阵的压缩存储及转置,快速转置法,C++代码实现
- MMX实现的矩阵转置操作
- 快速排序实现稀疏矩阵的转置
- 用二维数组实现矩阵转置
- 稀疏矩阵一次定位快速转置算法
- 数据结构之---C语言实现矩阵的转置
- 实现矩阵的转置
- MapReduce框架中矩阵相乘的算法思路及其实现
- 【代码】稀疏矩阵的压缩存储与转置算法
- 3.3.3.3稀疏矩阵转置算法
- 稀疏矩阵的存储方式及其快速转置的实现
- 稀疏矩阵的存储以及转置、加法、乘法操作实现