二维矩阵原地转换
2013-02-05 20:20
141 查看
思想来源:http://blog.csdn.net/lxmky/article/details/7987643
src = {1 2 3 4 5 6}
des={1 4 2 5 3 6}
//代码
const int M = 2;
const int N=3;
void MySort::MatrixReverseTest()
{
//待转换的二维矩阵
int a[] = {1,2,3,4,5,6};
int len = M*N;
MatrixReverse(a,len);
//输出转换后的数据
PrintArr(a,len);
}
void MySort::MatrixReverse(int *p,int len)
{
//这里i取值为des的索引,从1-(len-2),因为转换中1与最后一个元素的值,转换前后值不变,因此可以
不参与转换
for(int i=1;i<len-1;i++)
{
//根据i,获取des数组i处的值在原src数列中的位置
int j = SrcIdx(p,i);
if(i<j)
{
CircleMove(p,i,j);
}
}
}
//src,des数组的索引转换函数
int MySort::SrcIdx(int *p,int pos)
{
for(int i=0;i<M*N;i++)
{
if(pos==((i*M)%(M*N-1)))
{
break;
}
}
return i;
}
//循环移动
void MySort::CircleMove(int *p,int start,int end)
{
int tmp = p[start];
p[start] = p[end];
while(end>start+1)
{
p[end]=p[end-1];
end--;
}
p[end]=tmp;
}
src = {1 2 3 4 5 6}
des={1 4 2 5 3 6}
//代码
const int M = 2;
const int N=3;
void MySort::MatrixReverseTest()
{
//待转换的二维矩阵
int a[] = {1,2,3,4,5,6};
int len = M*N;
MatrixReverse(a,len);
//输出转换后的数据
PrintArr(a,len);
}
void MySort::MatrixReverse(int *p,int len)
{
//这里i取值为des的索引,从1-(len-2),因为转换中1与最后一个元素的值,转换前后值不变,因此可以
不参与转换
for(int i=1;i<len-1;i++)
{
//根据i,获取des数组i处的值在原src数列中的位置
int j = SrcIdx(p,i);
if(i<j)
{
CircleMove(p,i,j);
}
}
}
//src,des数组的索引转换函数
int MySort::SrcIdx(int *p,int pos)
{
for(int i=0;i<M*N;i++)
{
if(pos==((i*M)%(M*N-1)))
{
break;
}
}
return i;
}
//循环移动
void MySort::CircleMove(int *p,int start,int end)
{
int tmp = p[start];
p[start] = p[end];
while(end>start+1)
{
p[end]=p[end-1];
end--;
}
p[end]=tmp;
}
相关文章推荐
- Java中二维矩阵的表示与转换
- 自然数转换为二维矩阵可用于笛卡尔乘积型数据进行内存分页
- 工作小知识点滴1--二维数据转换为矩阵表格
- 创建二维矩阵并矩阵求和再转换
- 找到一个二维矩阵中所有包含0的,并且把0元素所在行与列全部转换成0的算法!
- 找到一个二维矩阵中所有包含0的,并且把0元素所在行与列全部转换成0的算法!
- 把二维矩阵转换成一维矩阵
- Numpy——将二维图像矩阵转换为一维向量
- Java中二维矩阵的表示与转换,转自51CTO
- python 把一个m*n的二维矩阵转换成一个m*n行,三列的列表
- poj 1050 To the Max 二维矩阵转换一维求子序列最大值
- Numpy 将二维图像矩阵转换为一维向量的方法
- 求助KMeans算法关于转换矩阵Vectors问题
- [LintCode]38.搜索二维矩阵 II
- Arithmetic problem | 在原地顺时针90度旋转矩阵图像
- 关于二维指针强制转换及传递的简单剖析
- 坐标系转换之三:欧拉角、四元数、旋转矩阵、方向余弦矩阵、旋转向量、轴角表示
- C#中的矩阵转换
- Openblas加速二维矩阵卷积操作
- [LeetCode] Search a 2D Matrix 搜索一个二维矩阵