package project1;
public class text1 {
		  public static void main(String [] args) {
			    /*写一个稀疏数组SpareArray
			     * 1.创建一个【】【】数据
			     * 2.对这个数组进行遍历
			     * 3.求出这个数组的有效值的个数 
			     * */
			    System.out.println("创建数组:");
			    int[][] Array = new int[11][11];
			    for(int i = 0;i < Array.length;i++) {
				      for(int j = 0;j < Array[i].length;j++) {
					        System.out.print(Array[i][j] + "\t");
				      }
				      System.out.println();
			    }
			      //想数组内输入有效值
			      Array[3][4] = 1;
			      Array[4][5] = 2;
			      Array[5][6] = 3;
			      Array[6][7] = 4;
			      Array[7][8] = 5;
			      Array[8][9] = 6;
			
			      System.out.println("输入有效值后的数组:");
			      for(int i = 0;i < Array.length;i++) {
				        for(int j = 0;j < Array[i].length;j++) {
					          System.out.print(Array[i][j] + "\t");
				        }
				        System.out.println();
			      }
			      //对数组的有效值进行统计
			      int sum = 0;
			      for(int i = 0;i < Array.length;i++) {
				        for(int j = 0;j < Array[i].length;j++) {
					          if(Array[i][j] != 0) {
						            sum++;
					          }
				        }
			      }
			      System.out.println("数组的有效值个数=" + sum);
			      //得到有效值的个数之后,就应该去创建稀疏数组SpareArray
			      /*稀疏数组的特点
			       * 1.只有3列
			       * 2.第一行储存原数组的行列数和有效值个数
			       * 3.剩下所有行存有效值的坐标和值
			       * */
			      //创建并且遍历稀疏数组
			      int[][] SpareArray = new int[sum+1][3];
			      for(int i = 0;i < SpareArray.length;i++) {
				        for(int j = 0;j <SpareArray[i].length;j++) {
					          System.out.print(SpareArray[i][j] + "\t");
				        }
				        System.out.println();
			      }
			      //将原数组的规模放入稀疏数组中
			      SpareArray[0][0] = 11;
			      SpareArray[0][1] = 11;
			      SpareArray[0][2] = sum;
			
			      //遍历原数组赋值给稀疏数组
			      int count = 1;
			      for(int i = 0;i <Array.length;i++) {
				        for(int j = 0;j <Array[i].length;j++) {
					          if(Array[i][j] != 0) {
						            SpareArray[count][0] = i;
						            SpareArray[count][1] = j;
						            SpareArray[count][2] = Array[i][j];
						            count++;
					          }
				        }
			      }
			      //输出稀疏数组
			      System.out.println("输出稀疏数组:");
			      for(int i = 0;i < SpareArray.length;i++) {
				         for(int j = 0;j <SpareArray[i].length;j++) {
					           System.out.print(SpareArray[i][j] + "\t");
				         }
				        System.out.println();
			      }
			
			      //稀疏数组转换成原数组
			      //读取稀疏数组第一行的数据信息
			      System.out.println("稀疏数组转换成原数组:");
			      int[][] Array2 = new int[SpareArray[0][0]][SpareArray[0][1]];
			
			      //采用一维数组遍历二维数组,稀疏数组只有3列这个特点
			      for(int i = 1;i < SpareArray.length;i++) {
				        Array2[SpareArray[i][0]][SpareArray[i][1]] = SpareArray[i][2];
			      }
			      //遍历
		
			      for(int i = 0;i < Array2.length;i++) {
				        for(int j = 0;j < Array2[i].length;j++) {
					          System.out.print(Array2[i][j] + "\t");
				        }
				        System.out.println();
			      }
		  }
}
                    
                
                
            
        
浙公网安备 33010602011771号