**
代码如下:
**
package com.lijiaming.www;
/**
* @基本功能:矩阵转换练习
* @ClassName: Demo01
* @Description: TODO
* @Author: lijiaming
* @Date: 2022/1/10 8:53
* @Version 1.0
*/
public class Demo01 {
public static void main(String[] args) {
Demo01 demo01 = new Demo01();
int[][] array = demo01.init();//初始化二维数组(稀疏矩阵)
int[][] array2 = demo01.transferV(array);//稀疏矩阵压缩
demo01.print(array2);//打印压缩矩阵
int[][] array3 = demo01.transferM(array2);
demo01.print(array3);
}
/**
* @Method: init
* @函数(方法)功能: 初始化稀疏矩阵
* @Author: lijiaming
* @param
* @Return: int[][]
* @Exception:
* @Date: 2022/1/10 10:57
*/
public int[][] init() {
int[][] array1 = new int[11][11];
array1[1][2] = 1;
array1[2][3] = 2;
array1[3][4] = 3;
array1[4][5] = 4;
return array1;
}
/**
* @Method: print
* @函数(方法)功能: 打印矩阵
* @Author: lijiaming
* @param array
* @Return: void
* @Exception:
* @Date: 2022/1/10 10:58
*/
public void print(int[][] array) {
for (int[] ints : array) { //增强for循环
for (int anInt : ints) {
System.out.print(anInt + "\t");
}
System.out.println();
}
}
/***
* @Method: transferV
* @函数(方法)功能: 稀疏矩阵--->压缩矩阵
* 1、统计系数矩阵的数值个数
* 2、压缩后的矩阵行数等于有效数值个数+1
* 3、列数都为3
* @Author: lijiaming
* @param array
* @Return: int[][]
* @Exception:
* @Date: 2022/1/10 10:13
*/
public int[][] transferV(int[][] array) {
//1、统计系数矩阵的数值个数
int sum = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if (array[i][j] != 0) {
sum++;
}
}
}
//2、定义压缩矩阵
int[][] array2 = new int[sum + 1][3];
array2[0][0] = 11;
array2[0][1] = 11;
array2[0][2] = sum;
//3、转换
int count = 0;//为了计数
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if (array[i][j] != 0) {
count++;
array2[count][0] = i;
array2[count][1] = j;
array2[count][2] = array[i][j];
}
}
}
return array2;
}
/**
* @param array
* @Method: transferM
* @函数(方法)功能:压缩矩阵-->稀疏矩阵
* 1、定义稀疏矩阵
* 2、赋值
* @Author: lijiaming
* @Return: int[][]
* @Exception:
* @Date: 2022/1/10 10:48
*/
public int[][] transferM(int[][] array) {
//定义稀疏矩阵,稀疏矩阵的行数为压缩矩阵第一行第1列的值,列数为压缩矩阵第一行第2列的值
int[][] array3 = new int[array[0][0]][array[0][1]];
//遍历压缩矩阵
for (int i = 1; i < array.length; i++) {
array3[array[i][0]][array[i][1]] = array[i][2];
}
return array3;
}
}