import sun.font.FontRunIterator;
/**
- 稀疏数组
- row col value
/
public class Array {
//向二维数组中添加指定元素
public static void narr(int arra[][],int row ,int col,int value){
arra[row][col]=value;
}
//遍历输出二维数组
public static void out(int[][] parr){
for (int row[]:parr){
for(int data:row){
System.out.print(data+" ");
}
System.out.println();
}
}
public static void main(String[] args) {
//创建一个66数组
int[][] arr=new int[6][6];
arr[1][2]=1;
arr[2][3]=2;
Array.narr(arr,3,4,1);
//遍历
Array.out(arr);
// -----------------------------------------------
//得到二维数组中非0个数
int num=0;
for (int i = 0; i <arr.length; i++) {
for (int j = 0; j <arr.length; j++) {
if (arr[i][j] != 0) {
num++;
}
}
}
System.out.println("num="+num);
// 创建一个稀疏数组
int sarr[][]=new int[num+1][3];
sarr[0][0]=6;
sarr[0][1]=6;
sarr[0][2]=num;
int count=0;
//给稀疏数组赋值
for (int i = 0; i <arr.length; i++) {
for (int j = 0; j <arr.length; j++) {
if (arr[i][j]!=0) {
count++;
sarr[count][0] = i;
sarr[count][1] = j;
sarr[count][2] = arr[i][j];
}
}
}
// 遍历输出稀疏数组
Array.out(sarr);
//------------------------------------------------------------------
//将稀疏数组恢复成为二维数组
int arr1[][]=new int[sarr[0][0]][sarr[0][1]];
for (int i = 1; i <sarr.length; i++) {
arr1[sarr[i][0]][sarr[i][1]]=sarr[i][2];
}
// 遍历输出二维数组
Array.out(arr1);
}
}