【数据结构】稀疏矩阵运算器(加、减、乘)

您所在的位置:网站首页 相关系数可以加减吗 【数据结构】稀疏矩阵运算器(加、减、乘)

【数据结构】稀疏矩阵运算器(加、减、乘)

2024-07-12 18:50| 来源: 网络整理| 查看: 265

问题描述

稀疏矩阵是指那些多数元素为零的矩阵,利用“稀疏”特点进行存储和计算可以大大节省存储空间,提高计算效率。实现一个能进行稀疏矩阵基本运算的运算器

基本要求

以“带行逻辑连接信息”的三元组顺序表表示系数矩阵,实现两个矩阵相加、相减和想乘的运算。稀疏矩阵的输入形式采用三元组表示,而运算结果的矩阵以通常阵列形式列出

运行截图

数据输入

在这里插入图片描述 输出结果 在这里插入图片描述

代码实现 import java.util.Arrays; import java.util.Scanner; public class matrixTest { public static void main(String[] args) throws Exception { Matrix M = new Matrix(); System.out.println("创建矩阵M:"); M.CreateMatrix(); Matrix N = new Matrix(); System.out.println("创建矩阵N:"); N.CreateMatrix(); System.out.println("M:"); M.PrintMatrix(); System.out.println("N: "); N.PrintMatrix(); Matrix Q = Matrix.add(M,N); System.out.println("M+N:"); Q.PrintMatrix(); Q = Matrix.sub(M,N); System.out.println("M-N:"); Q.PrintMatrix(); Q = Matrix.multiply(M,N); System.out.println("M*N: "); Q.PrintMatrix(); } } class Triple{ //三元组 int i,j;//非零元的行下标和列下标 int e;//非零元的数值 } class Matrix{ Triple[] triples;//非零元三组表 int mu,nu,tu;//矩阵的行数列数和非零元的个数 int[] rops;//各行第一个非零元的在tripls数组里的位置表 public void CreateMatrix() throws Exception{ Scanner in = new Scanner(System.in); System.out.println("请输入矩阵的行数、列数,以及非零元的个数"); mu = in.nextInt(); nu = in.nextInt(); tu = in.nextInt(); if(tu>mu*nu) throw new Exception("输入非法,非零元个数大于矩阵元素的个数"); triples = new Triple[tu+1]; Arrays.fill(triples,null); rops = new int[mu+1]; Arrays.fill(rops,0);//快速初始化rops数组,将rops数组里的值都致为0 System.out.println("请依次输入非零元所在的行数、列数,以及数值,需要按照行的顺序输入"); /** 这里规定非零元的顺序需要按照行的顺序输入的原因是: *要满足: * rpos[row]指示的是矩阵的第row行的第一个非零元在triples里的序号, * rpos[row+1]-1指向矩阵的第row行的最后一个非零元在triples里的序号 * 这样就要满足非零元是按照行的顺序排列的 */ for (int k =1; k


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3