稀疏数组
稀疏数组
对二维数组为0的数据忽略,有值的组成一个新二维数组,实现压缩;新二维数组特点为点0行为旧二维数组的行数、列数、有值个数,即为三列;以后每一行为一个有值数据的行号,列号,值,即新二维数组有[有值个数+1列:从0开始]+[3列]
public static void main(String[] args) {
int sum = 0;//有效值数
int row = 0;//行
int column = 0;//列
int count = 0;//有效值数递增
//俩层循环打印成表,建一个原表
int[][] array1 = new int[5][5];
array1[3][2] = 1;
array1[4][3] = 2;
//打印成表
System.out.println("表1————————————————————————");
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1.length; j++) {
System.out.print(array1[i][j] + "\t");
}
System.out.println();//换行
}
//遍历数组得到行和列,有效值个数
for (int i = 0; i < array1.length; i++) {
row = i;
for (int j = 0; j < array1.length; j++) {
column = j;
if (array1[i][j] != 0) {
sum++;
}
}
}
//创建稀疏数组,并给第一行赋值
int[][] array2 = new int[sum + 1][3];
array2[0][0] = row + 1;
array2[0][1] = column + 1;
array2[0][2] = sum;
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1.length; j++) {
if (array1[i][j] != 0) {
array2[count + 1][0] = i;
array2[count + 1][1] = j;
array2[count + 1][2] = array1[i][j];
count++;//有效值递增最后加1
}
}
}
System.out.println(count);
System.out.println();
System.out.println("表2——————————————————");
for (int i = 0; i < array2.length; i++) {
for (int j = 0; j < array2.length; j++) {
System.out.print(array2[i][j] + "\t");
}
System.out.println();
}
}

浙公网安备 33010602011771号