C语言实验——矩阵转置
输入N*N的矩陣输出它的转置矩阵。
第一行为整数N(1≤N≤100)
接着是一个N*N的矩阵。
输入N*N的矩陣输出它的转置矩阵。
第一行为整数N(1≤N≤100)
接着是一个N*N的矩阵。
矩阵(包括稀疏矩阵)的转置即互换矩阵中所有元素的行标和列标,如
图 1 矩阵转置示意图
但如果想通过程序实现矩阵的转置互换行标和列标只是第一步。因为实现矩陣转置的前提是将矩阵存储起来数据结构中提供了 3 种存储矩阵的结构,分别是
如果采用前两种结构,矩阵的转置过程会涉及三元组表吔跟着改变的问题如图 2 所示:
图 2 三元组表的变化
图 2a) 表示的是图 1 中转置之前矩阵的三元组表,2b) 表示的是图 1 中矩阵转置后对应的三元组表
鈈仅如此,如果矩阵的行数和列数不等也需要将它们互换。
因此通过以上分析矩阵转置的实现过程需完成以下 3 步:
此 3 步中,前两步比较简单关键在于最后一步的实现。本节先介绍较容易的一种
矩阵转置的实现思路是:不断遍历存储矩阵的三元组表,每次嘟取出表中 j 列最小的那一个三元组互换行标和列标的值,并按次序存储到一个新三元组表中。 例如将图 2a) 三元组表存储的矩阵进行转置的过程为:
图 3 矩阵转置的第一个过程
图 4 矩阵转置的第二个过程
对比图 4 和图 2b) 可以看到,矩阵被成功地转置
因此,矩阵转置的 C 语言实现代码为:
由于此算法中嵌套使用了两个 for 循环为O(n2)
。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。