吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2215|回复: 6
收起左侧

[Java 转载] java 简化数组 稀疏数组

[复制链接]
炮娘 发表于 2021-8-20 16:51


什么是稀疏数组
这种含有大量0或者同一个数值的情况下就可以考虑使用稀疏数组
通常来说为一个二维数组里面存放了大量 空 数值 例如

       0 0 0 0 0 0
       0 1 0 0 0 0
       0 0 0 0 0 0
       3 0 0 0 0 0       此数组为 7行6列数组 但实际有效值只有三个
       0 0 0 0 0 0   
       0 0 0 0 0 0
       0 0 0 0 5 0

                         第一行记录的信息是原始二维数组的行、列信息以及有效数据的个数
      3 7 6     >>>>  此为转换后的数组 转换成为了一个4行3列的数组        3代表 原数组有三个有效数据 ,原来的矩阵为7行6列     
      1 1 1     >>>>  数据 1 在原数组的第二行第二列
      3 3 0     >>>>  数据 3 在原数组的第四行第1列
      5 6 4     >>>>  数据 5 在原数组的第六行第5列         [依次存储的是有效数据的行、列信息以及所代表的数值。


以下为代码实现
public class ArrayTest {
    public static void main(String[] args) {
        // 创建一个为7行6列的二维数组
        int [][]arr = new int[7][6];

        //赋值
        arr[1][1]=1;
        arr[3][0]=3;
        arr[6][4]=5;
        int count = 0;
        //转换为稀疏数组以此简化数组
        // 一 判断有效元素个数
        for (int i=0;i<7;i++){
            for (int k=0;k<6;k++){
                if (arr[k]!= 0) {
                    count++;
                }
            }
        }
        //创建稀疏数组 sparseArray。
        int [][] sparseArr = new int[count+1][3];
        sparseArr[0][0]= count;
        sparseArr[0][1]= 7;
        sparseArr[0][2]= 6;
        // 1 循环判段到一个有效数
        int n = 0;
        for (int i=0;i<7;i++){
            for (int k=0;k<6;k++){
                if (arr[k]!= 0) {
                    n++;

                    sparseArr[n][0]=arr[k];
                    sparseArr[n][1]= i;
                    sparseArr[n][2]= k;
                }
            }
        }

        for(int i = 0;i< sparseArr.length;i++) {
            System.out.printf("%d\t%d\t%d\t\n",sparseArr[0],sparseArr[1],sparseArr[2]);
        }
        System.out.println();



    }
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

丿吹雪灬 发表于 2021-8-20 17:21
数据结构?自学的?
 楼主| 炮娘 发表于 2021-8-20 17:25

看尚guigu视频学习后 试着自己能手写分享出来而已
Cloverud 发表于 2021-8-20 17:32
丿吹雪灬 发表于 2021-8-20 17:51
炮娘 发表于 2021-8-20 17:25
看尚guigu视频学习后 试着自己能手写分享出来而已

那视频我一年前看过,建议看完数据结构学算法时直接刷LeetCode,那个老师表达的不是很清楚
 楼主| 炮娘 发表于 2021-8-20 17:59
丿吹雪灬 发表于 2021-8-20 17:51
那视频我一年前看过,建议看完数据结构学算法时直接刷LeetCode,那个老师表达的不是很清楚

leetCode网站 Edg浏览器 用者崩溃  刷个题点以下就卡   我换个浏览器去看看
cglwudi 发表于 2021-11-15 16:41
学废了,围观大佬
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表