java之用三元组实现稀疏矩阵 | 您所在的位置:网站首页 › 三元组数组 › java之用三元组实现稀疏矩阵 |
之前写过js的算法实现,但是也只是看了教程,自己没有去手动实现,所以算法的水平还是很低。现在重新开始好好写一下这段时间学习算法的代码实现。算法来源是b站的BV1E4411H73v.因为教学是java实现的,所以跟着老师用java的算法实现,虽然工作中用的是c#,就当做新学一门语言吧。 稀疏矩阵在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵;与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。定义非零元素的总数比上矩阵所有元素的总数为矩阵的稠密度。(百度总结) 总的来说就是一个二维矩阵,然后0的元素过多,因为会造成空间上的浪费。因为可以引用三元矩阵的方式就是只存储非零元素的方法来进行压缩存储。简单点,就是一个多行3列的二维矩阵。 设计思路1.三元组的一个元素代表矩阵的行数,第二个元素代表矩阵的列数,第三个元素代表矩阵的非零个数。 2.从第二行起,第一个元素代表非零元素在原矩阵的行数,第二个元素代表非零元素在原矩阵的列数,第三个元素代表矩阵的值。 常用于棋盘之类,先写了一个实现的小算法。 代码实现如下 package com.atguigu.aocunxin; import java.io.Console; public class first { public static void main(String[] args) { int[][] yiwei=new int[11][11]; yiwei[0][1]=3; yiwei[4][5]=6; yiwei[7][8]=23; int count=0; for (int[] is : yiwei) { for (int is2 : is) { if(is2!=0){ count++; } } } // 输出二维数组 int[][] erwei=new int[count+1][3]; erwei[0][0]=11; erwei[0][1]=11; erwei[0][2]=count; count=0; for(int i=0;i |
CopyRight 2018-2019 实验室设备网 版权所有 |