数组和稀疏数组之间的转换
稀疏数组:
1.记录数组一共有几行几列,有多少个非0元素
2.把具有不同元素的行列及其值记录在一个小型的数组中,从而得到压缩空间的方式
java编程语言实现代码如下:
public class SparseArray {
public static void main(String[] args) {
int[][] originalArray1 = new int[10][11];
originalArray1[1][2] = 2;
originalArray1[2][3] = 1;
originalArray1[3][4] = 1;
/*
原始数组转稀疏素组
/
*/
//遍历二维数组
System.out.println("*****原始数组*****");
arrMethod(originalArray1);
//遍历原始二维数组得到非零个数
int sum = 0;//定义一个变量表示原始数组的非零个数
for (int i = 0; i < originalArray1.length; i++) {
for (int j = 0; j < originalArray1[i].length; j++) {
if (originalArray1[i][j] != 0) {
sum++;
}
}
}
System.out.println("数组中的非零元素个数有" + sum+"个");
//创建稀疏数组
int[][] sparseArray = new int[sum + 1][3];
sparseArray[0][0] = 10;
sparseArray[0][1] = 11;
sparseArray[0][2] = sum;
// arrMethod(sparseArray);
//遍历原始数组,把其中的非零数赋值给稀疏数组
int num = 0;//定义变量表示第几个非零个数
for (int i = 0; i < originalArray1.length; i++) {
for (int j = 0; j < originalArray1[i].length; j++) {
if (originalArray1[i][j] != 0) {
num++;
sparseArray[num][0] = i;
sparseArray[num][1] = j;
sparseArray[num][2] = originalArray1[i][j];
}
}
}
System.out.println("*****稀疏数组*****");
arrMethod(sparseArray);
/*
稀疏数组转二维数组
*/
//根据稀疏数组创建原始数组
int[][] originalArray2 = new int[sparseArray[0][0]][sparseArray[0][1]];
for (int i = 1; i < sparseArray.length; i++) {
originalArray2[sparseArray[i][0]][sparseArray[i][1]] =sparseArray[i][2];
}
System.out.println("*******返回的原始数组********");
arrMethod(originalArray2);
}
public static void arrMethod(int[][] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
}
}