数组应用:矩阵乘法Java版

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组应用:矩阵乘法Java版相关的知识,希望对你有一定的参考价值。

    关键在于实现算法,所以代码都写在了main程序中,程序代码如下:

package chapter02;

import java.util.Arrays;

/*
 * 矩阵乘法的实现(简单版)
 */
public class CH02_03 {
	public static void main(String[] args) {
		int[][] arr1 = 
			{
					{3, 3, 3},
					{5, 5, 5}
			};
		int[][] arr2 = 
			{
					{1, 2},
					{3, 4},
					{5, 6}
			};
		
		//定义并填充存放结果的数组
		int[][] arrResult = new int[2][2];
		for(int i = 0; i < 2; i++){
			Arrays.fill(arrResult[i], 0);
		}
		
		//输出矩阵乘法前的结果数组
		for(int i = 0; i < 2; i++){
			System.out.println(Arrays.toString(arrResult[i]));
		}
		
		//计算矩阵乘法
		for(int i = 0; i < arr1.length; i++){
			//外循环,arr1的第i行
			for(int j = 0; j < arr1.length; j++){
				//内循环,arr2的第j列,这里也用arr1.length,是因为arr1的行数和arr2的列数是一致的
				//arrResult[i][j]即为结果
				for(int k = 0; k < arr2.length; k++){
					//内内循环,k值用来控制相乘的元素的索引
					//表现为,k控制arr1横向移动,arr2纵向移动
					//即arr1[i][k],arr2[k][j]
					arrResult[i][j] += arr1[i][k]*arr2[k][j];
				}
			}
		}
		
		//输出矩阵乘法后的结果数组
		for(int i = 0; i < arrResult.length; i++){
			System.out.println(Arrays.toString(arrResult[i]));
		}
		
		
	}			
}

    运行结果如下:

[0, 0]
[0, 0]

[27, 36]
[45, 60]


本文出自 “香飘叶子” 博客,请务必保留此出处http://xpleaf.blog.51cto.com/9315560/1976526

以上是关于数组应用:矩阵乘法Java版的主要内容,如果未能解决你的问题,请参考以下文章

NC143 矩阵乘法 JAVA

NC143 矩阵乘法 JAVA

一道简单的递推题(快速幂+矩阵乘法优化+滚动数组)

大型矩阵的 CUDA 矩阵乘法中断

BZOJ 2738 矩阵乘法(整体二分+二维树状数组)

详解矩阵乘法