首页 > 编程语言 > 详细

稀疏数组

时间:2021-07-29 22:27:22      阅读:35      评论:0      收藏:0      [点我收藏+]

稀疏数组

当一个数组中大部分元素为0,或者为同一值的数组时,我们可以用稀疏数组来保存该数组。在稀疏数组中,数组下标为[0]的第一行元素分别代表原始数组的行列数以及中的有效值(即非零值)的个数,再往下从稀疏数组第二行开始,每行的元素分别记录了各个有效值在原始数组中所在的位置以及有效值的值。例如下标为[1]的第二行中的元素表示记录了原始数组中array0=22,即原始数组中第一行第四个数为22。 

package com.company;
?
import java.util.Arrays;
?
public class Arrays01 {
   public static void main(String[] args) {
       int [][] array1=new int[11][11];
       array1[1][2]=1;
       array1[2][3]=2;
       System.out.println("输出原始数据");
       for (int[] ints : array1) {
           for (int anInt : ints) {
               System.out.print(anInt+"\t");
          }
           System.out.println();
      }
?
       //转化为稀疏数组
       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("================================================");
       System.out.println("sum="+sum);
?
?
       System.out.println("================================================");
       System.out.println("转化为稀疏数组");
       int[][] array2=new int[sum+1][3];
       array2[0][0]=11;
       array2[0][1]=11;
       array2[0][2]=sum;
?
       int conut=0;
       for (int i = 0; i <array1.length ; i++) {
           for (int j = 0; j < array1[i].length; j++) {
               if(array1[i][j]!=0){
                   conut++;
                   array2[conut][0]=i;
                   array2[conut][1]=j;
                   array2[conut][2]=array1[i][j];
              }
          }
      }
?
       for (int i = 0; i < array2.length; i++) {
           System.out.println(array2[i][0]+"\t"+array2[i][1]+"\t"+array2[i][2]);
      }
       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[] ints : array1) {
           for (int anInt : ints) {
               System.out.print(anInt+"\t");
          }
           System.out.println();
      }
  }
}

技术分享图片

 

 

 

稀疏数组

原文:https://www.cnblogs.com/rsx524/p/15076428.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!