java稀疏数组
原创
©著作权归作者所有:来自51CTO博客作者959_1x的原创作品,请联系作者获取转载授权,否则将追究法律责任
这里是数组的应用:稀疏数组
一个11x11的棋盘转化为nx3的稀疏数组
这里的n为元素的个数+1
这里是稀疏数组和原始数组的相互转化的代码
0代表没有数字,1代表有数字
public class sparceArrayDemo01 {
public static void main(String[] args) {
int[][] arr = new int[11][11];
arr[1][2] = 1;
arr[2][3] = 1;
for(int[] row : arr) {
for(int data : row) {
System.out.printf("%d\t",data);
}
System.out.println();
}
int sum = 0;
for(int i =0;i < arr.length;i++) {
for(int j = 0; j < arr[i].length;j++) {
if(arr[i][j] != 0) {
sum++;
}
}
}
int[][] sparceArray = new int[sum+1][3];
sparceArray[0][0] = arr.length;
sparceArray[0][1] = 11;
sparceArray[0][2] = sum;
int count = 0;
for(int i = 0;i < arr.length;i++) {
for(int j = 0;j < arr[i].length;j++) {
if(arr[i][j] != 0) {
count ++;
sparceArray[count][0] = i;
sparceArray[count][1] = j;
sparceArray[count][2] = arr[i][j];
}
}
}
for(int i = 0;i < sparceArray.length;i++) {
for(int j = 0;j < sparceArray[i].length;j++) {
System.out.printf("%d\t",sparceArray[i][j]);
}
System.out.println();
}
int arr2[][] = new int[sparceArray[0][0]][sparceArray[0][1]];
for(int i = 1;i < sparceArray.length;i++) {
arr2[sparceArray[i][0]][sparceArray[i][1]] = sparceArray[i][2];
}
for(int[] row:arr2) {
for(int data : row) {
System.out.printf("%d\t",data);
}
System.out.println();
}
}
}