package com.demo;
/**
* description
* @author xiangqian
* @since 2022/05/13 09:45
* 稀疏数组
*/
public class SparseArray {
/**
* 获取二维数组棋盘
*/
public static int[][] getTwoArray() {
int[][] twoArray = new int[5][5];
twoArray[1][2] = 1;
twoArray[2][3] = 2;
return twoArray;
}
/**
* 打印二维数组
*/
public static void printArray(int[][] array) {
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
/**
* 二维数组转稀疏数组
*/
public static int[][] twoArrayToSparseArray(int[][] twoArray) {
//1.便利原始二维数组,得到有效数据个数sum
int row = twoArray.length;
int col = 0;
int val = 0;
for (int i = 0; i < twoArray.length; i++) {
for (int j = 0; j < twoArray[i].length; j++) {
if (twoArray[i][j] != 0) {
val++;
}
}
col = twoArray[i].length;
}
//2.创建稀疏素组
int[][] sparseArray = new int[val + 1][3];
sparseArray[0][0] = row;
sparseArray[0][1] = col;
sparseArray[0][2] = val;
//3.将二维数组的有效数据存入到稀疏数组
int tempCount = 0;
for (int i = 0; i < twoArray.length; i++) {
for (int j = 0; j < twoArray[i].length; j++) {
if (twoArray[i][j] != 0) {
tempCount++;
sparseArray[tempCount][0] = i;
sparseArray[tempCount][1] = j;
sparseArray[tempCount][2] = twoArray[i][j];
}
}
}
return sparseArray;
}
/**
* 稀疏数组转二维数组
*/
public static int[][] sparseArrayToTwoArray(int[][] sparseArray) {
int[][] twoArray = new int[sparseArray[0][0]][sparseArray[0][1]];
for (int i = 1; i < sparseArray.length; i++) {
int row = sparseArray[i][0];
int col = sparseArray[i][1];
twoArray[row][col] = sparseArray[i][2];
}
return twoArray;
}
public static void main(String[] args) {
//1.获取二维数组棋盘
int[][] twoArray = getTwoArray();
//2.打印二维数组棋盘
printArray(twoArray);
//3.二维数组转稀疏数组
int[][] sparseArray = twoArrayToSparseArray(twoArray);
//4.打印稀疏数组
printArray(sparseArray);
//5.稀疏数组转二维数组
int[][] twoArray2 = sparseArrayToTwoArray(sparseArray);
//6.打印二维数组
printArray(twoArray2);
}
}
03-17
02-27