矩阵转置的两种实现方式:从暴力法到原地算法

矩阵转置是线性代数中的基础操作,也是面试中经常遇到的题目。今天我们就来聊聊如何高效地实现矩阵转置,包括暴力法和原地算法两种方式。

什么是矩阵转置?

简单来说,矩阵转置就是把原矩阵的行变成列,列变成行。例如:

输入矩阵:

复制代码
[1, 1, 1, 1]
[2, 2, 2, 2]
[3, 3, 3, 3]
[4, 4, 4, 4]

转置后:

复制代码
[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]

方法一:暴力法(Brute Force)

这种方法适用于任意大小的矩阵,时间复杂度 O(nm),空间复杂度 O(nm)。

基本思路:创建一个新矩阵,将原矩阵中位置 ij 的元素放到新矩阵的 ji 位置。

实现步骤:

  1. 初始化一个大小为 m × n 的新矩阵(m 是原矩阵行数,n 是列数)
  2. 遍历原矩阵的每个元素
  3. 将原矩阵 ij 位置的元素赋值给新矩阵 ji 位置
  4. 返回新矩阵
python 复制代码
def transpose(mat):
    rows = len(mat)
    cols = len(mat[0])
    
    # 创建转置矩阵
    tMat = [[0 for _ in range(rows)] for _ in range(cols)]
    
    for i in range(rows):
        for j in range(cols):
            tMat[j][i] = mat[i][j]
    
    return tMat

学矩阵转置,从暴力法到原地算法,理解指针跳跃的细节确实容易让人头大。

最近发现一个宝藏网站叫图码,它把60多种数据结构和算法都做成了交互式动画,矩阵转置的两种实现过程一目了然。

更牛的是,能直接输入自己的测试数据生成动画,或者上传C/C++/Java/Python代码进行可视化解析,连408考研和数据结构期末考的代码都有全书级详解。

强烈推荐准备考研或期末复习的同学去试试,7×24小时AI还能随时解释代码逻辑。

戳这里直达👉图码

图码-数据结构与算法交互式可视化平台

访问网站:https://totuma.cn

方法二:原地算法(In-place)

这种方法只适用于方阵(行数等于列数),时间复杂度 O(n²),空间复杂度 O(1)。

基本思路:沿主对角线交换元素,只需要遍历上三角矩阵,将每个元素与对角线对称位置的元素交换。

实现步骤:

  1. 外层循环 i 从 0 到 n-1
  2. 内层循环 j 从 i+1 到 n-1(避免重复交换)
  3. 交换 matij 和 matji
python 复制代码
def transpose(mat):
    n = len(mat)
    
    for i in range(n):
        for j in range(i + 1, n):
            mat[i][j], mat[j][i] = mat[j][i], mat[i][j]
    
    return mat

两种方法对比

特性 暴力法 原地算法
适用矩阵 任意大小 仅方阵
时间复杂度 O(n*m) O(n²)
空间复杂度 O(n*m) O(1)
实现难度 简单 中等

总结

  • 对于非方阵矩阵,只能使用暴力法
  • 对于方阵矩阵,原地算法更高效,节省内存
  • 原地算法的关键在于只遍历上三角矩阵,避免重复交换

希望这篇笔记能帮助你理解矩阵转置的实现!如果你有其他实现方式,欢迎在评论区分享~

相关推荐
Bshaya_16 分钟前
红黑树详解:概念、规则与插入实现
数据结构·红黑树·二叉搜索树·平衡树·插入逻辑
WBluuue1 小时前
数据结构与算法:分块(一):块状数组、块状链表
数据结构·c++·算法·链表
路灯上の马陈2 小时前
数据结构-树
数据结构·1024程序员节
澳鹏Appen2 小时前
澳鹏重磅发布ExamOCRBench:面向端到端试卷判分的多任务基准
算法·benchmark·基准评测
benjormin2 小时前
Java数据结构 二叉搜索树
数据结构·算法
人工智能培训3 小时前
知识图谱:结构化表达实体与关系的知识组织技术
大数据·人工智能·算法·重构·生活·知识图谱
地平线开发者3 小时前
QAT 实战:从 PyTorch 模型到 J6E 实板精度与延时验证
pytorch·算法·自动驾驶
IT星宿3 小时前
github-gravity:用 Rapier2D 把 GitHub 贡献图做成 SVG 物理动画
算法·github
♡すぎ♡4 小时前
SWE 的基本条件
算法·swe·浅水模拟
郝学胜-神的一滴5 小时前
AI 编程智能体 17:四步搞定专属AI智能体
大数据·人工智能·python·神经网络·算法·langchain·强化学习