Java稀疏数组
package com.whs.day07paixu;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import java.util.Arrays;
/**
-
@Author: 阿波罗
-
@Date: 2021/12/1 12:29
-
@oath: 不分白天黑夜的征途 淦!
-
@Version: 1.0.0
*/
public class Demo51Xishushuzu {
public static void main(String[] args) {
//
int[][] arr1 = new int[11][11]; //初始化 默认值都是0
arr1[1][2] = 1;//1行 2列
arr1[2][3] = 2;//2行 3列
System.out.println(“输出原始的数组”);
// for each 循环 打印数组
for (int[] ints : arr1) {
for (int anInt : ints) {
System.out.print(anInt + “\t”);
}
System.out.println();//控制换行
}
System.out.println("=====================================================");
// 转换为稀疏数组保存
// 获取有效值的个数
int sum = 0;
for (int i = 0; i < arr1.length; i++) {//获取 数组的行数
// int columns = i[0].length;
for (int j = 0; j < arr1[i].length; j++) {//获取 数组的列数
if (arr1[i][j] != 0) { //i 行 或 j 列 不为0时 则为有效值
sum++;//有效值的个数
}
}
}System.out.println("有效值个数为:" + sum + "个"); System.out.println("======================================================");
//2.创建一个稀疏数组的数组
int[][] arr2 = new int[sum + 1][3];
arr2[0][0] = 11;
arr2[0][1] = 11;
arr2[0][2] = sum;
// 遍历二维数组 将非0的值 存放在稀疏数组中
int count = 0;
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr1[i].length; j++) {
if (arr1[i][j] != 0) {
count++;//记录 有效值个数 //i 行 或 j 列 不为0时 则为有效值
arr2[count][0] = i;
arr2[count][1] = j;
arr2[count][2] = arr1[i][j];
}
}
}
// 输出稀疏数组
System.out.println(“稀疏数组”);
for (int i=0;i<arr2.length;i++){
System.out.println(arr2[i][0]+"\t"
+arr2[i][1]+"\t"
+arr2[i][2]+"\t");
}
System.out.println("=还原稀疏数组=======");
// 1.读取稀疏数组
int[][] arr3=new int[arr2[0][0]][arr2[0][1]];
// 2.给其中的元素还原它的值
for (int i = 1; i <arr2.length ; i++) {
arr3[arr2[i][0]][arr2[i][1]]=arr2[i][2];
}
System.out.println(“打印还原稀疏数组==========”);
// 3.打印
for (int[] ints : arr1) {
for (int anInt : ints) {
System.out.print(anInt + “\t”);
}
System.out.println();//控制换行
}
}
}