Java数据结构---稀疏数组
稀疏数值的基础概念(图示)
◆当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。
◆稀疏数组的处理方式是:
◆记录数组一共有几行几列,有多少个不同值
◆把具有不同值的元素和行列及值记录在-个小规模的数组中,从而缩小程序的规模
◆如上图:上边是原始数组,下边是稀疏数组
public static void main(String[] args){ //建立一个原始二维数组 int[][] array1 = new int[11][11]; array1[1][2] = 1; array1[2][3] = 5; array1[3][4] = 9; for(int i=0;i){ for(int j=0;j ){ System.out.print(array1[i][j]+"\t"); } System.out.println(); } System.out.println("======================================" + "===================================="); //判断有多少个有效数值 int sum = 0; for(int i=0;i ){ for(int j=0;j ){ if(array1[i][j]!=0){ sum++; } } } System.out.println("有效数值有"+sum+"个"); //建立一个稀疏数组 int[][] array2 = new int[sum+1][3]; array2[0][0] = 11; array2[0][1] = 11; array2[0][2] = sum; //count记数 int count = 0; for(int i=0;i ){ for(int j=0;j ){ if(array1[i][j]!=0){ count++; //array2[count][0] 横坐标 = i //array2[count][1] 纵坐标 = j //array2[count][2] 值 = array1[i][j] array2[count][0] = i; array2[count][1] = j; array2[count][2] = array1[i][j]; } } } for(int x[]:array2){ for(int intX:x){ System.out.print(intX+"\t"); } System.out.println(); } System.out.println("======================================" + "===================================="); //还原稀疏数组 //建立一个二维数组 int[][] array3 = new int[array2[0][0]][array2[0][1]]; for(int i=1;i ){ //array3[array2的横坐标][array2的纵坐标] = array2[i][2] array3[array2[i][0]][array2[i][1]] = array2[i][2]; } for(int x[]:array3){ for(int intX:x){ System.out.print(intX+"\t"); } System.out.println(); } }