package DataStructure;
/**
* Created with IntelliJ IDEA.
* Description:
* User: 86178
* Date: 2024-01-12
* Time: 10:25
*/
public class SparseArr {
public static void main(String[] args) {
//创建一个原始的二维数组
int[][] arr=new int[11][11];
//0 表示无子 1黑子 2白子
arr[1][2]=1;
arr[2][3]=2;
//输出原始的二维数组
System.out.println("原始数组如下");
for (int[] ints : arr) {
for (int anInt : ints) {
System.out.print(anInt+" ");
}
System.out.println();
}
//将数组转稀疏数组
//遍历数组,假设数组默认值为0,有效数据各不相同
int sum =0;
for (int[] ints : arr) {
for (int anInt : ints) {
if(anInt!=0)
{
sum++;
}
}
}
int[][] sparse=new int[sum+1][3];
sparse[0][0]=11;
sparse[0][1]=11;
sparse[0][2]=sum;
//构造稀疏数组
int si=1;
for(int i=0;i<11;i++)
{
for(int j=0;j<11;j++)
{
if(arr[i][j]!=0)
{
sparse[si][0]=i;
sparse[si][1]=j;
sparse[si][2]=arr[i][j];
si++;
}
}
}
System.out.println("对应的稀疏数组如下");
for (int[] ints : sparse) {
for (int anInt : ints) {
System.out.printf("%d\t",anInt);
}
System.out.println();
}
//将稀疏数组恢复成对应的原始数组
int row=sparse[0][0];
int col=sparse[0][1];
int[][] arr2=new int[row][col];
for (int[] ints : arr2) {
for (int anInt : ints) {
anInt=0;
}
}
for(int i=1;i<=sparse[0][2];i++)
{
arr2[sparse[i][0]][sparse[i][1]]=sparse[i][2];
}
System.out.println("还原的数组如下");
for (int[] ints : arr2) {
for (int anInt : ints) {
System.out.printf("%d\t",anInt);
}
System.out.println();
}
}
}
尚硅谷Java数据结构--稀疏数组
于 2024-02-05 20:30:49 首次发布