# 入门级 - 稀松数组

06/07 22:29

`package com.bianmirj;

/**

• 数组的稀松算法 */

public class ScarceArray { public static void main(String[] args) {

``````    //准备好源数组
int chessArr1[][] = new int[11][11];
chessArr1[1][2] = 1;
chessArr1[2][3] = 2;
chessArr1[4][5] = 2;
for (int[] row : chessArr1) {
for (int data : row) {
System.out.printf("%d\t", data);
}
System.out.println();
}

/*
稀疏数组的原理
0 11 11 3  //11行 11列 3个元素
1  1 2  1
2  2 2  2
3  4 5  2
*/

//先求出总行 总列
int col = 11;
int row = 11;
int sum = 0;

for (int[] vv : chessArr1) {
for (int v : vv) {
if (v != 0) {
sum++;
}
}
}

toScarceArray(chessArr1, sum);

}

public static void toScarceArray(int[][] arr, int num) {
int[][] newArr = new int[num + 1][3];
newArr[0][0] = 11;
newArr[0][1] = 11;
newArr[0][2] = num;
int temp = 1;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
if (arr[i][j] != 0) {
newArr[temp][0] = i;
newArr[temp][1] = j;
newArr[temp][2] = arr[i][j];
temp++;
}
}
}
for (int[] row : newArr) {
for (int data : row) {
System.out.printf("%d\t", data);
}
System.out.println();
}

toEasyArray(newArr);
}

public static void toEasyArray(int[][] arr) {
int c = arr[0][0];
int r = arr[0][1];
int chessArr1[][] = new int[c][r];

for (int i = 0; i < arr.length; i++) {
if (i != 0) {
int coll = arr[i][0];
int rowl = arr[i][1];
System.out.println(coll + "-" + rowl);
chessArr1[coll][rowl] = arr[i][2];
}

}

for (int[] row : chessArr1) {
for (int data : row) {
System.out.printf("%d\t", data);
}
System.out.println();
}
}
``````

} `

0
0 收藏

0 评论
0 收藏
0