数组中的稀疏数组的使用

数组中的稀疏数组的使用

稀疏数组的的用处:稀疏数组用于二维数组,用于二维数组中的其他数字的相同的数字的,可以使用稀疏数组来保存数组。

稀疏数组的使用示例

  • 原始的数组:
    在这里插入图片描述
  • 稀疏数组的样子:
    在这里插入图片描述
  • 代码示例:
package com.company;

public class Main {

    public static void main(String[] args) {
    int[][] aryy1=new int[11][11];
    aryy1[1][2]=1;
    aryy1[2][3]=2;
    System.out.println("====输出原始数组===");
    System.out.println("输出原始数组");
    for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 11; j++) {
                System.out.print(aryy1[i][j]+" ");
            }
            System.out.println();
        }

    System.out.println("===输出转换后的稀疏数组===");
    //使用sum来计算不等于0的数的个数
    int sum=0;
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 11; j++) {
                if (aryy1[i][j]!=0){
                    sum++;
                }
            }
        }
    int [][] arry2=new int[sum+1][3];
    arry2[0][0]=11;
    arry2[0][1]=11;
    arry2[0][2]=sum;
    int count=0;
    //遍历对应的arry这个二维数组,将非零的值放在稀疏数组中
        for (int i = 0; i <aryy1.length ; i++) {
            for (int j = 0; j <aryy1[i].length ; j++) {
                if(aryy1[i][j]!=0){
                    count++;
                    arry2[count][0]=i;
                    arry2[count][1]=j;
                    arry2[count][2]=aryy1[i][j];
                }
            }
        }
        //输出稀疏数组
        System.out.println("输出稀疏数组");
        for (int i = 0; i <arry2.length ; i++) {
            System.out.println(arry2[i][0]+"\t"+arry2[i][1]+"\t"+arry2[i][2]);

        }

        //输出从稀疏数组还原的数组
        System.out.println("===输出还原的数组===");
        //定义一个还原数组,用于读取稀疏数组
        int [][] arry3=new int[arry2[0][0]][arry2[0][1]];
        //还原稀疏数组中不是0的值
        for (int i = 1; i <arry2.length ; i++) {
            arry3[arry2[i][0]][arry2[i][1]]=arry2[i][2];
        }
        //打印还原的数组
        System.out.println("输出还原的数组");
        for (int i = 0; i < arry3.length; i++) {
            for (int j = 0; j <arry3.length ; j++) {
                System.out.print(aryy1[i][j]+" ");
            }
            System.out.println();
        }


    }
}

  • 输出截图:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值