7.稀疏数组
int[][] a = new int[5][5];//声明创建普通数组
//填写几个非0数据
a[0][2] = 1;
a[2][1] = 2;
int sum = 0;//记录有几个非0数据
//打印普通数组
System.out.println("普通数组:");
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[i][j] + " ");
if (a[i][j] != 0) {
sum++;
}
}
System.out.println();
}
System.out.println("稀疏数组:");
int[][] b = new int[sum + 1][3];//声明创建稀疏数组
//记录普通数组的行,列,非0数据有几个
b[0][0] = 5;
b[0][1] = 5;
b[0][2] = sum;
int count = 0;//记录非0数据的横坐标的位置
//稀疏数组填充信息
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
if (a[i][j] != 0) {
count++;
b[count][0] = i;//非0数据的横坐标
b[count][1] = j;//非0数据的纵坐标
b[count][2] = a[i][j];//非0数据的具体值
}
}
}
//打印稀疏数组
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < b[i].length; j++) {
System.out.print(b[i][j] + " ");
}
System.out.println();
}
System.out.println("通过稀疏数组还原普通数组:");
