稀疏数组

稀疏数组介绍

  • 数组中大部分元素为0,或为同一值数组,可以使用稀疏数组来保存该数组。

  • 处理方式

    • 记录数组一共有几行几列,几个不同值

    • 把不同值的元素和行列及值记录在一个小规模数组中来缩小程序规模

测试代码:

package com.chenhao.method;
import java.util.Arrays;
public class Demo10 {
   public static void main(String[] args) {
       //创建二维数组
       System.out.println("创建输出二维数组:");
       int[][] array1 = new int[11][11];
       array1 [1][2] = 1;
       array1 [2][3] = 2;int sum = 0;
       for (int i = 0; i < array1.length ; i++) {
           for (int j = 0; j < array1[i].length ; j++) {
               System.out.print(array1[i][j] + " ");
               if (array1[i][j]!=0){
                   sum++;
              }
          }
           System.out.println();
      }
       System.out.println("===========================");
       System.out.println("记录稀疏数组:");
       int[][] array2 = new int[sum+1][3];
       int cont = 0;
       array2[0][0] = array1.length;
       array2[0][1] = array1[1].length;
       array2[0][2] = sum;
       for (int i = 0; i < array1.length; i++) {
           for (int j = 0; j < array1[i].length; j++) {
               if (array1[i][j]!=0){
                   cont++;
                   array2[cont][0]=i;array2[cont][1]=j;array2[cont][2]=array1[i][j];
              }
          }
      }
       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();
      }
       System.out.println("===========================");
       System.out.println("还原数组:");
       int[][] array3 = new int[array2[0][0]][array2[0][1]];
       for (int i = 1; i < array2.length; i++) {
               array3[array2[i][0]][array2[i][1]]=array2[i][2];
      }
       for (int i = 0; i < array3.length; i++) {
           for (int j = 0; j < array3[i].length; j++) {
               System.out.print(array3[i][j]+" ");
          }
           System.out.println();
      }

  }
}

 

posted @ 2020-11-25 10:33  灯火阑珊CH  阅读(225)  评论(0)    收藏  举报