dequanth

导航

稀疏数组的创建和还原

package com.java.test;

public class ArrayDemo {
public static void main(String[] args) {
//创建一个二维数组11*11, 0:没有棋子 1:黑棋 2:白棋
int[][] array = new int[11][11];
array[1][2] = 1;
array[2][3] = 2;
System.out.println("输出原始数组:");
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
System.out.print(array[i][j]+"\t");
}
System.out.println();
}
//转换为稀疏数组
//获取有效值的个数
int sum = 0;
for (int[] ints : array) {
for (int anInt : ints) {
if(anInt!=0){
sum++;
}
}
}
System.out.println("有效值的个数为:"+sum);
//创建一个稀疏数组
int[][] array0 = new int[sum+1][3];
array0[0][0]=array.length;
array0[0][1]=array[0].length;
array0[0][2]=sum;
//遍历原数组,给稀疏数组赋值
int index=0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
if(array[i][j]!=0){
index++;
array0[index][0]=i;
array0[index][1]=j;
array0[index][2]=array[i][j];
}
}
}
//输出稀疏数组
for (int[] ints : array0) {
for (int anInt : ints) {
System.out.print(anInt+"\t");
}
System.out.println();
}
//========================================================================
System.out.println("=还原稀疏数组");
int[][] array1 = new int[array0[0][0]][array0[0][1]];
for (int i = 1; i < array0.length; i++) {
array1[array0[i][0]][array0[i][1]]= array0[i][2];
}
//输出新的数组
System.out.println("输出还原后的数组:");
for (int[] ints : array1) {
for (int anInt : ints) {
System.out.print(anInt+"\t");
}
System.out.println();
}
}
}
运行结果:
输出原始数组:
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
有效值的个数为:2
11 11 2
1 2 1
2 3 2
=还原稀疏数组

输出还原后的数组:
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0

posted on 2022-09-17 11:10  dequantianhe  阅读(9)  评论(0编辑  收藏  举报