arrays - 高效的矩阵转置算法

标签 arrays algorithm matrix transpose

我需要转置一个由 char 数组表示的方阵。 有没有办法以低于 o(n^2) 的复杂度来执行它? 无论如何,缓存效率最高的方法是什么?

最佳答案

不,你不能在 O(n^2) 内完成,这背后的原因是你需要至少触摸矩阵中的每个元素一次(这已经是 ( n*n). 因此你不能做得更好。

您能做的最好的事情是使用 O(1) 额外的内存(而不是时间)进行就地矩阵转置(在 wikipedia 中有很好的概述)。

请注意,您并不总是需要计算转置矩阵。对于很多应用程序,您可以只交换坐标(如果您需要 A[i][j] - 只需返回 A[j][i] -th 元素)

关于arrays - 高效的矩阵转置算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28014994/

相关文章:

arrays - 错误 : range violation in D programming

algorithm - SPOJ 数字总和

matrix - 如何在APL语言中找到满足两个条件的矩阵的第一行的索引?

algorithm - 离散数学 Big-O 表示法 算法复杂性

javascript - Mongoose 删除文档中的数组元素

arrays - 如何在 Swift 中为 UIPickerView 按字母顺序排列数组

arrays - 难以理解指数搜索的工作原理

c中的象棋矩阵

c# - 如何将列表复制到数组

c# - 从道路网络生成等时线图