什么叫稀疏数组
小案例:
代码实现
package com.hhit;
public class SparseArray {
public static void main(String[] args) {
//二维数组转稀疏数组
//1.创建一个二维数组
int[][] chessArray=new int [11][11];
//2.赋值
chessArray[0][3]=1;
chessArray[2][5]=2;
//打印看一下
for (int[] row: chessArray) {
for (int data : row) {
System.out.printf("%d\t",data);
}
System.out.println();
}
//3.转换为稀疏数组
//3.1遍历算出不为0的个数
int sum=0;
for (int[] row: chessArray) {
for (int data : row) {
if (data!=0){
sum++;
}
}
}
System.out.println(sum);
//3.2创建稀疏数组
int [][] sparseArray=new int[sum+1][3];
//3.3初始化稀疏数组
sparseArray[0][0]=11;
sparseArray[0][1]=11;
sparseArray[0][2]=sum;
//3.4给稀疏数组赋值
int count=0;
for (int i=0;i<11;i++) {
for (int j=0;j<11;j++) {
if (chessArray[i][j]!=0){
count++;
sparseArray[count][0]=i;
sparseArray[count][1]=j;
sparseArray[count][2]=chessArray[i][j];
}
}
}
System.out.println("稀疏数组的形式为:");
for (int[] row : sparseArray){
for (int data : row){
System.out.printf("%d\t",data);
}
System.out.println();
}
//2稀疏转二维
//1.读取第一行创建原始二维数组
int[][] chessArray2=new int[sparseArray[0][0]][sparseArray[0][1]];
for (int[] row: chessArray2) {
for (int data : row) {
System.out.printf("%d\t",data);
}
System.out.println();
}
System.out.println("---------------------------");
//2.赋值
for (int i=1;i<=sparseArray[0][2];i++) {
chessArray2[sparseArray[i][0]][sparseArray[i][1]]=sparseArray[i][2];
}
for (int[] row: chessArray2) {
for (int data : row) {
System.out.printf("%d\t",data);
}
System.out.println();
}
}
}