1.二维树组转稀疏数组:
package com.Array;
import java.util.Arrays;
public class SparseArray {
public static void main(String[] args) {
System.out.println("创建一个数组:");
//1.创建一个二维数组
// 0表示没有棋子,1表示有黑子,2表示白子
int arr[][]=new int[11][11];
arr[1][2]=1;
arr[2][4]=2;
for(int []row:arr)
{
for(int data:row)
System.out.printf("%d\t",data);
System.out.println();
}
System.out.println("--------------------------");
//2.将二维数组转为稀疏数组
//2.遍历数组,得到非0个数
int sum=0;
for(int i=0;i<11;i++)
{
for(int j=0;j<11;j++)
{
if(arr[i][j]!=0)
{
sum++;
}
}
}
//2.2创建对应的稀疏数组
int sparseArr[][]=new int[sum+1][3]; //行列值
//2.3给稀疏数组赋值
sparseArr[0][0]=11;
sparseArr[0][1]=11;
sparseArr[0][2]=sum;
int count=0;
//2.4将非0数存入到数组中
for(int i=0;i<11;i++)
{
for(int j=0;j<11;j++)
{
if(arr[i][j]!=0)
{
count++;
sparseArr[count][0]=i;
sparseArr[count][1]=j;
sparseArr[count][2]=arr[i][j];
}
}
}
//遍历稀疏数组
System.out.println("-----------------");
System.out.println("稀疏数组:");
for(int i=0;i<sparseArr.length;i++)
{
System.out.printf("%d\t%d\t%d\t\n",sparseArr[i][0],sparseArr[i][1],sparseArr[i][2]);
}
System.out.println("-----------------------");
System.out.println("稀疏数组转二维数组:");
int [][]backArr=new int [sparseArr[0][0]][sparseArr[0][1]];
//把记录赋给原始数组
for(int i=1;i<sparseArr.length;i++) {
backArr[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
}
//输出恢复后二维数组
for(int []row:backArr)
{
for(int data:row)
{
System.out.printf("%d\t",data);
}
System.out.println();
}
}
}
2.将稀疏数组存入到磁盘中: