学习笔记---稀疏数组

稀疏数组

在这里插入图片描述在这里插入图片描述

- 图片来自B站狂神说

  • 定义稀疏数组时一定是3列,其行数是有效值+1
  • 第0行0列是原数组的行数,0行1列是原数组的列数,0行2列是有效值个数

创建稀疏数组步骤

  1. 遍历原数组,计算有效值的个数
  2. 声明并建立稀疏数组,其列数为有效值个数,行数为3
  3. 对0行0列赋值原数组行数,0行1列赋值原数组列数,0行2列赋值有效值的个数
  4. 再一次遍历原数组,遇到有效值则将其行数i,列数j,有效值分别赋值给稀疏数组的x行0列,1列,2列

还原稀疏数组:

  1. 声明并建立一个新数组,其行数为稀疏数组的0行0列的值,列数为0行1列的值
  2. 遍历稀疏数组,遇到有效值时,c[b[i][0]][b[i][1]] = b[i][2];

代码示例:

package array;

import java.util.Arrays;

//稀疏数组
public class ArrayDemo07 {
    
    
    public static void main(String[] args) {
    
    
        int[][] a = new int[11][11];
        a[1][2]=1;
        a[2][3]=2;

        //输出原有的数组
        System.out.println("输出原始的数组:" );
        for (int[] ints : a) {
    
    
            for (int anInt : ints) {
    
    
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
        System.out.println("======================");
        //创建一个稀疏数组的数组
        int count=0;    //记录非0值的个数
        for (int i = 0; i < a.length; i++) {
    
    
            for (int j = 0; j < a[i].length; j++) {
    
    
                if (a[i][j]!=0){
    
    
                    count++;
                }
            }
        }

        int[][] b = new int[count+1][3];
        b[0][0] = a.length;
        b[0][1] = a[0].length;
        b[0][2] = count;
        int cnt=0;
        for (int i = 0; i < a.length; i++) {
    
    
            for (int j = 0; j < a[i].length; j++) {
    
    
                if (a[i][j]!=0){
    
    
                    cnt++;
                    b[cnt][0] = i;
                    b[cnt][1] = j;
                    b[cnt][2] = a[i][j];
                }
            }
        }
        System.out.println("稀疏数组:");
        for (int[] ints : b) {
    
    
            for (int anInt : ints) {
    
    
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }

        System.out.println("=======================");
		//还原稀疏数组
        int[][] c = new int[b[0][0]][b[0][1]];
        for(int i=1; i<b.length; i++){
    
    
            c[b[i][0]][b[i][1]] = b[i][2];
        }
        System.out.println("还原稀疏数组:");
        for (int[] ints : c) {
    
    
            for (int anInt : ints) {
    
    
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/yang862819503/article/details/113700769
今日推荐