数据结构之稀疏数组

1.为什么要用稀疏数组?

        图1

 像这样一个二维数组,有效元素很少,但是却浪费了大量的内存空间

于是 稀疏数组就诞生了

图2

2.什么是稀疏数组?

        像图2一样,

                稀疏数组 sparsearray

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

                处理方法

                        1.记录原数组一共有几行几列,有多少有效元素(即为图二第一行,五行,五列, 五个有效元素)

                        2.存有效元素,从第二行开始。

3.代码实现

package 稀疏数组;

import java.util.Arrays;

public class X {
    int[][] a;

    public X(int[][] a){this.a=a;}

    public int[][] f(){
        int num=0;
        for(int i=0;i<a.length;i++){
            for(int j=0;j<a[i].length;j++){
                if(a[i][j]!=0){
                    num++;
                }
            }
        }//得到二维数组非零值的个数num
        int[][] y=new int[num+1][3];//创建稀疏数组
        y[0][0]=a.length;y[0][1]=a[0].length;y[0][2]=num;//给稀疏数组第一行赋值
        int con=0;
        for(int i=0;i<a.length;i++){
            for(int j=0;j<a[i].length;j++){
                if(a[i][j]!=0){
                   con++;
                   y[con][0]=i;
                   y[con][1]=j;
                   y[con][2]=a[i][j];
                }
            }
        }//给稀疏数组其余行赋值
        p(a);
        p(y);
        return y;
    }
    public void p(int[][] s){//打印二维数组,仅用于展示效果
        for(int i=0;i<s.length;i++){
            System.out.println(Arrays.toString(s[i]));
        }
    }
}

                

4.点个关注,谢谢亲的支持

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值