稀疏数组:
public class sparsearArray {public static void main(String[] args) {//创建一个11*11的二维数组//0:表示沒有棋子 1:表示黑色棋子 2:表示白色棋子int[][] array1 = new int[11][11];array1[1][2] = 1;array1[2][3] = 2;array1[3][4] = 1;System.out.println("初始数组");for (int[] it :array1) {for (int i :it) {System.out.printf("%d\t", i);}System.out.println();}//转换为稀疏数组//先计算不为0的总个数int sum = 0;for (int[] it :array1) {for (int item :it) {if (item != 0) {sum++;}}}//稀疏数组的行数是sum+1所以int[][] sparsearArray = new int[sum + 1][3];sparsearArray[0][0] = 11;sparsearArray[0][1] = 11;sparsearArray[0][2] = sum;int count = 0;for (int i = 0; i < 11; i++) {for (int j = 0; j < 11; j++) {if (array1[i][j] != 0) {count++;sparsearArray[count][0] = i;sparsearArray[count][1] = j;sparsearArray[count][2] = array1[i][j];}}}//输出稀疏舒数组System.out.println("这是稀疏数组");for (int[] it :sparsearArray) {for (int item :it) {System.out.printf("%d\t", item);}System.out.println();}//稀疏数组转化为普通二维数组int[][] array2 = new int[sparsearArray[0][1]][sparsearArray[0][1]];for (int i = 1; i < sparsearArray.length; i++) {array2[sparsearArray[i][0]][sparsearArray[i][1]] = sparsearArray[i][2];}System.out.println("普通二维数组");for (int[] it :array2) {for (int i :it) {System.out.printf("%d\t", i);}System.out.println();}}}
