package com.summer.sparseArray;
/**
* @author :summer
* @date :Created in 2022/8/23 09:12
* @description:1、二维数组转稀疏数组 2、稀疏数组转二维数组
*/
public class SparseArray {
public static void main(String[] args) {
//定义二维数组
int[][] array = new int[11][11];
array[0][2] = 6;
array[1][3] = 2;
//打印二维数组
System.out.println("原始二维数组为:");
for (int[] ints : array) {
for (int anInt : ints) {
System.out.printf("%d\t", anInt);
}
System.out.println();
}
//计算有效的数值个数
int sum = 0;
for (int[] ints : array) {
for (int anInt : ints) {
if (anInt != 0) {
sum++;
}
}
}
//创建稀疏数组 并复制第一行
int[][] sparseArray = new int[sum + 1][3];
sparseArray[0][0] = 11;
sparseArray[0][1] = 11;
sparseArray[0][2] = sum;
//为稀疏数组填充其余数据
int count = 0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (array[i][j] != 0) {
count++;
sparseArray[count][0] = i;
sparseArray[count][1] = j;
sparseArray[count][2] = array[i][j];
}
}
}
System.out.println("稀疏数组为:");
for (int[] ints : sparseArray) {
for (int anInt : ints) {
System.out.printf("%d\t", anInt);
}
System.out.println();
}
//稀疏数组再转为二维数组
//为二维数组填充数据
int[][] array1 = new int[sparseArray[0][0]][sparseArray[0][1]];
for (int i = 1; i < sparseArray.length; i++) {
array1[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2];
}
//打印二维数组
System.out.println("转换的二维数组为:");
for (int[] ints : array1) {
for (int anInt : ints) {
System.out.printf("%d\t", anInt);
}
System.out.println();
}
}
}
二维数组与稀疏数组的转换
最新推荐文章于 2024-07-27 13:31:57 发布