C++写矩阵的转置

这篇博客分享了如何用C++实现矩阵的转置,重点介绍了矩阵原地转置算法,包括非n阶矩阵和n阶方阵的情况。作者提供了详细代码,并引用了相关资源。
摘要由CSDN通过智能技术生成

  (2019年2月19日注:这篇文章原先发在自己github那边的博客,时间是2017年2月5日)

  对于任意非n阶矩阵的转置,用c++应该怎么写代码,思考了一下,发现并没有那么简单,上网找到了一个比较好的算法,叫做矩阵原地转置矩阵算法。基于别人的代码,改写成可以使用指针动态分配内存的方法。

  先放传送门:C++实现矩阵原地转置算法的实现

  原理并不难,那篇文章非常的详细,我不再赘述,下面把改写好的代码发出来。

 1 /*************************************************************************
 2 > File Name: matrix_transpose.cpp
 3 > Author: SongLee
 4 > Modified: JCChan
 5 ************************************************************************/
 6 #include<iostream> 
 7 using namespace std;
 8 /* 后继 */
 9 int getNext(int i, int m, int n)
10 {
11     return (i%n)*m + i / n;
12 }
13 /* 前驱 */
14 int getPre(int i, int m, int n)
15 {
16     return (i%m)*n + i / m;
17 }
18 /* 处理以下标i为起点的环 */
19 void movedata(int *mtx, int i, int m, int n)
20 {
21     int temp = mtx[i]; // 暂存 
22     int cur = i;    // 当前下标 
23     int pre = getPre(cur, m, n);
24     // 从最后一个数开始,获得它的前驱,直到前驱的值和最后一位值相等,相当于交换的逆过程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值