讲到稀疏数组,那常见的例子就是五子棋,稀疏数组就是为了减少空间资源浪费,来看一下将二维数组五子棋改写为稀疏数组
//稀疏数组 五子棋
public class SparseArray {
public static void main(String[] args) {
//创建一个二维数组表示原始数据
//0表示没有棋子
//1表示黑子 2表示白子
int chessArr[][] = new int[11][11];
chessArr[1][2] = 1;
chessArr[2][3] = 2;
int num = 0; //记录一共几个棋子
//输出原始数组
System.out.println("原始二维数组:");
for (int[] ints : chessArr) {
for (int anInt : ints) {
System.out.print(anInt + "\t");
if (anInt != 0){
num += 1;
}
}
System.out.println();
}
//创建稀疏数组
int sparseArray[][] = new int[num+1][3];
sparseArray[0][0] = chessArr.length;
sparseArray[0][1] = chessArr[0].length;
sparseArray[0][2] = num;
int sparsei = 1; //记录稀疏数组的行位置
for (int i = 0;i < chessArr.length;i++){
for (int j = 0;j < chessArr[i].length;j++){
if (chessArr[i][j] != 0){
sparseArray[sparsei][0] = i;
sparseArray[sparsei][1] = j;
sparseArray[sparsei][2] = chessArr[i][j];
sparsei += 1;
}
}
}
//输出稀疏数组
System.out.println("稀疏数组:");
for (int[] ints : sparseArray) {
for (int anInt : ints) {
System.out.print(anInt+"\t");
}
System.out.println();
}
}
}
注释我的写的挺全,运行一下看看