数据结构之稀疏数组

107 阅读1分钟

图结构

稀疏数组的第一个位置存的是有6行,7类,8种数值,其他位置存的才是对应的数据

Snipaste_2021-10-30_16-34-07.png

代码实现

Snipaste_2021-10-30_17-49-17.png

package SparseArray;

public class MySparseArray {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[][] array1 = new int[11][11];
		array1[0][0] = 1;
		array1[1][1] = 2;
		array1[2][2] = 1;
		// showArray(array1);
		
		//统计个数sum
		int sum = 0;
		for (int i = 0; i < 11; i++) {
			for (int j = 0; j < 11; j++) {
				if(array1[i][j]!=0) {
					sum++;
				}
			}
		}
		System.out.println(sum);
		
		int [][] sparseArr = new int [sum+1][3];
		sparseArr[0][0] = 11;
		sparseArr[0][1] = 11;
		sparseArr[0][2] = sum;
		
		//存入稀疏数组
		int count = 0;
		for (int i = 0; i < 11; i++) {
			for (int j = 0; j < 11; j++) {
				if(array1[i][j]!=0) {
					count++;
					sparseArr[count][0] = i;
					sparseArr[count][1] = j;
					sparseArr[count][2] = array1[i][j];
				}
			}
		}//外层for
		
		//showArray(sparseArr);
		
		//稀疏-》原始二维数组
		int[][] array2 = new int[sparseArr[0][0]][sparseArr[0][1]];
		
		for(int i=1; i<sparseArr.length; i++) {
			array2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
		}
		showArray(array2);

	}

	public static void showArray(int[][] array1) {
		for (int[] arr : array1) {
			for (int num : arr) {
				System.out.printf("%d\t", num);
			}
			System.out.println();
		}
	}

}