稀疏数组说明及代码实现

稀疏分解(内含完整的MATLAB代码) 立即下载

稀疏sparsearray数组

1.先看一个实际的需求

编写的五子棋程序中,有存盘和续上盘的功能
在这里插入图片描述
分析问题:
因为该二维数组的很多值是默认0,因此记录了很多没有意义的数据->稀疏数组

2.基本介绍
当一个数组中大部分元素为0,或则为同一值的数组时,可以使用稀疏数组来保存该数组。
稀疏数组的处理方法时:
(1)记录数组一共有几行几列,有多少个不同的值。
(2)把具有不同值的元素的行列及值记录在一个小规模的数组中(这个数组就是稀疏数组),从而缩小程序的规模。

稀疏数组的举例说明:
在这里插入图片描述
3.应用实列
(1)使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等等)
(2)把稀疏数组存盘,并且可以从新恢复原来的二维数据
(3)整体思路分析

在这里插入图片描述
(4)代码实现

public class SparseArray {
    public static void main(String[] args) throws Exception {
        //创建一个原始的二维数组11*11
        //0:表示没有棋子,1表示 黑子 2 表示蓝子
        int[][] cherryArr = new int[11][11];
        cherryArr[1][2] = 1;
        cherryArr[2][3] = 2;
        //输出原始数组
        System.out.println("原始的二维数组:");
        for (int[] arr : cherryArr) {
            System.out.println(Arrays.toString(arr));
        }
        //将二维数组转稀疏数组
        //先遍历二维数组得到非0数据的个数
        int sum = 0;
        for (int i = 0; i < cherryArr.length; i++) {
            for (int j = 0; j < cherryArr[i].length; j++) {
                if (cherryArr[i][j] != 0){
                    sum++;
                }
            }
        }
        //创建稀疏数组
        int[][] sparseArr = new int[sum+1][3];
        //给稀疏数组赋值
        sparseArr[0][0] = cherryArr.length;
        sparseArr[0][1] = cherryArr[0].length;
        sparseArr[0][2] = sum;
        //遍历二维数组,将非0的值存放到sparseArr中
        int oneIndex = 1;
        for (int i = 0; i < cherryArr.length; i++) {
            for (int j = 0; j < cherryArr[i].length; j++) {
                if (cherryArr[i][j] != 0){
                    sparseArr[oneIndex][0] = i;
                    sparseArr[oneIndex][1] = j;
                    sparseArr[oneIndex][2] = cherryArr[i][j];
                    oneIndex++;
                }
            }
        }
        //输出稀疏数组
        System.out.println("稀疏数组:");
        for (int[] arr : sparseArr) {
            System.out.println(Arrays.toString(arr));
        }
        //把稀疏数组存储到文件上
        File file = new File("array.db");
        if (!file.exists()){
            writeFile(sparseArr);
        }
        //读取稀疏数组
        int[][] readFile = readFile();
        if (readFile == null){
            throw new Exception("文件可能损坏");
        }
        //将稀疏数组恢复为原始数组
        int[][] recoveryCherryArr = new int[readFile[0][1]][readFile[0][1]];
        for (int i = 1; i <readFile.length; i++) {
            recoveryCherryArr[readFile[i][0]][readFile[i][1]] = readFile[i][2];
        }
        //恢复后的稀疏数组
        System.out.println("恢复后的稀疏数组:");
        for (int[] arr : recoveryCherryArr) {
            System.out.println(Arrays.toString(arr));
        }
    }
    public static void writeFile(int[][] sparseArr){
        FileOutputStream fos = null;
        ObjectOutputStream oos = null;
        try {
            fos = new FileOutputStream("array.db");
            oos = new ObjectOutputStream(fos);
            oos.writeObject(sparseArr);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (oos != null){
                try {
                    oos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }finally {
                    oos = null;
                }
            }
            if (fos != null){
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }finally {
                    fos = null;
                }
            }
        }
    }
    public static int[][] readFile(){
        FileInputStream fis = null;
        ObjectInputStream ois =null;
        int[][] sparseArr = null;
        try {
            fis = new FileInputStream("array.db");
            ois = new ObjectInputStream(fis);
            sparseArr = (int[][]) ois.readObject();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }finally {
            if (ois != null){
                try {
                    ois.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }finally {
                    ois = null;
                }
            }
            if (fis != null){
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }finally {
                    fis = null;
                }
            }
        }
        return sparseArr;
    }
}
数据清洗(Data Cleansing) 数据清洗(Data Cleansing)是指对数据进行处理和纠错,以去除或修复数据集中存在的错误、不致、不完整和冗余的数据,从而使数据更加准确、可靠和有用。数据清洗是数据处理和数据分析中一个非常重要的步骤,它可以帮助我们提高数据的质量,从而提高数据分析和机器学习的准确性和可靠性。数据清洗是一个重要的过程,它可以帮助我们提高数据的质量,从而提高数据分析和机器学习的准确性和可靠性。在实际应用中,我们可以使用一些工具和技术来实现数据清洗,例如 Pandas、NumPy 和 OpenRefine 等。通过数据清洗, 阅读详情

相关推荐

新手必看:SMIC 0.18um PDK安装保姆级教程(附Cadence IC617环境配置)

本文提供SMIC 0.18um PDK在Cadence IC617环境下的详细安装教程,涵盖环境准备、文件解压、安装脚本运行、环境变量配置及Cadence集成验证等关键步骤,特别针对初学者常见问题提供解决方案,助力快速掌握芯片设计工具配置。

weixin_30522183的博客 496

稀疏数组

/** * 稀疏数组 * * @Author: gb.wang * @Date 2020/5/18 10:53 * @Version 1.0 */ public class SparseArray { public static void main(String[] args) { int[][] sourceArray = initSourceArray(); System.err.println("原始数组为:"); for (i.

堕落不需要理由,需要的只是借口。 317

Spring AI Alibaba Skill 实战:定义、注册与渐进式披露的企业级落地

摘要:很多团队在接入大模型时,第一步做到的是“能对话”,第二步遇到的瓶颈却是“不能可靠执行”。Skill 的本质不是给模型多几个函数,而是把企业系统中的可控能力,以可治理、可审计、可扩展的方式交给 Agent。本文围绕 Spring AI Alibaba Skill 的定义、注册与渐进式披露,结合电商客服与售后场景,系统讲清楚其底层原理、架构设计、生产级实现、高并发治理与工程实践。@Component@Tool(description = "根据订单号查询订单状态、支付状态和物流状态")扫描包含。

一起修行,不孤单。这里有编程语言、开发工具、学习方法论和踩坑笔记。用简单的话说复杂的事,陪你从小白到进阶。周更干货,欢迎一起成长! 624

关于稀疏数组的简单代码编写

稀疏数组的简单介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: 记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 public class SparseArray{ public static void main(String[] args){ int [][] arr1 = new int[11][11]; arr1 [1][2] = 1; arr1 [5][1] = 2;

m0_53894712的博客 176

因果推断(二):因果推断涉及的ITE、ATE、CATE等效应

因果效应也称为**处理效应(Treatment effect)**是用于评判干预与否的结果差异的指标(处理变量对结果变量的影响)。比如在接受治疗组中,如果这些人不接受治疗,这组人接受治疗和不接受治疗的效应差异是多少。定义为实验组中每个个体的处理效应差异,比如一个个体在接收治疗和不接受治疗的两个处理方式的健康程度得分的差。但是一个人因为不可能。比如我们想探究接受治疗的男性用户和不接受治疗的男性用户的平均效果差异就是CATE。前面说ITE是无法观测的,是因为一个人不能同时接受治疗又不接受治疗,这里关键的就是。

Y1n的博客 3716

从MATLAB代码入手:手把手教你复现OTFS调制解调核心模块(附完整函数解析)

本文详细解析了OTFS调制解调技术在MATLAB中的实现方法,包括核心模块如ISFFT变换、海森堡变换及MP检测算法的代码实现。通过完整的函数解析和性能验证框架,帮助通信工程师快速掌握这一前沿技术,提升在高速移动场景下的通信系统设计能力。

weixin_42568801的博客 319

稀疏数组代码详解

package com.li.array; public class ArrayDemo08 { public static void main(String[] args) { //1.创建一个二维数组 11*11 0:没有棋子, 1:黑棋 2:白棋 int[][] array1 = new int[11][11]; array1[1][2] = 1; array1[2][3] = 2; //输出原始的数组

爱学习的正正的博客 145

用VASP计算GW+BSE

VASP在5.3以后的版本都能用解BSE方程的方法,在计算光吸收的过程中考虑激子效应。 下面就来写一个用BSE计算bulkSi的例子 首先,介电函数的计算是在GW计算的基础之上的。这里首先介绍G0W0的计算(我们这里直接在PBE的波函数基础上进行G0W0计算)。 1.PBE自恰计算,写WAVECAR System= Silicon groundstate occupied

ultra1989的专栏 2万+

稀疏数组(学习)

概述 当一个数组中大部分元素为0,或者为同一值的数组时(即一般使用在存在大量相同数据的表格中,存储了许多没有意义的数据。举个例子:一个数组中存储了500个数据,有效数据只有40个),可以使用稀疏数组来保存该数组。 稀疏数组的处理方式是:记录数组一共有几行几列,有多少个不同值;把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模 如下图:左边为原数组,右边为稀疏数组(借用来的图,后自补) 代码实现方式 首先创建10行10列的数组,然后给定有效值,其

qq_51738428的博客 229

MFC实现简单UDP通信(附完整源码)

MFC实现简单UDP通信(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1113

MATLAB基础应用精讲-【数模应用】信用评分模型(附R语言和python代码实现)

信用评分模型是近年来兴起的一种为了保障银行和其他金融部门的金融安全而设立的一种关于人身金融权限的划定模型。该模型指根据客户的信用历史资料,利用一定的信用评分模型,得到不同等级的信用分数,根据客户的信用分数,来决定客户所可以持有的金额权限,从而保证还款等业务的安全性。而随着在现代社会和公司中,贷款,信用卡的作用日渐突出,信用评分模型的发展前景不可估量。信贷风险是指借款人因偿还贷款或履行合同承诺而破产而产生损失的可能性。传统上,它与贷款人无法偿还所欠利息和本金、影响现金流和增加装配成本所产生的风险有关。

qq_36130719的博客 365

稀疏数组学习总结和C++实现代码

1、稀疏数组是什么? 稀疏数组的应用场景是:当普通数组中无效数据量远远大于有效数据量时,可以用稀疏数组对数组进行压缩。 是的,稀疏数组的功能就是进行压缩。节省内存占用,或者节约硬盘占有,网络传输等。 2、实例说明 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2...

jean7155的专栏 847

【蓝桥杯集训100题】scratch猜数字游戏 蓝桥杯scratch比赛专项预测编程题 集训模拟练习题第25题

​ scratch抽奖游戏 蓝桥杯集训100题第21题模拟练习解析 一、题目要求 编程实现 设计制作一个猜数游戏,随机生成一个数(这个数为 0~9 之间的某一个数),给 每位挑战者 9 次机会,猜这个数,挑战者无论怎样,永远不会猜中这个数,机会用完后,能报出这个随机数是多少。(例如:猜了 0~8 这 9 个数字,但最后就是提醒你随机数字是 9)。每猜一次,都会说“NO”,猜完第 9 次时,会提示:“Sorry,Num is X(正确的数字)”。 ​

青少年编程学习指导 1432

数据结构之稀疏数组

1.稀疏数组(sparsearray) 1.1 应用场景 : 当一个数组中大部分为0或者为同一个数值时可转化为稀疏数组进行存储 例子 : 五子棋棋盘 假设黑棋为1, 白棋为2, 其它未放置棋子的位置为0, 则可得到如下一个二维数组 000000000000000000000100000012222000000001000000000000000000000000000000000000000\b...

欢迎来到「小菠萝」的博客 181

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Java二维数组和稀疏数组的相互转换

Java二维数组和稀疏数组的相互转换

weixin_52984452的博客 529

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

稀疏(sparsearray)数组及其Java实现

前言 我们先看一个五子棋盘: 用一个二维数组来记录它,发现二维数组上有很多0,只有一个1和一个2,那用这种方式存储这个五子棋盘就很浪费空间了。 在此,我们引入稀疏数组,它可以完整地记录上面这个棋盘,但规格小了很多: 这个稀疏数组是这样得来的: 第0行:二维数组有11行11列,其中值不为零的有2个数; 第1行:1行2列中有一个不为零的值为1; 第2行:2行3列中有一个不为零的值为2。 再举一个栗子: 得出稀疏数组的简单定义:矩阵中非零元素的个数远远小于矩阵元素的总数,并且非零元素的分布没有规律则称该矩阵为

竹蜻蜓飞行的博客 394

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

Java实现数据结构稀疏数组

Java实现数据结构稀疏数组

weixin_52195362的博客 258

数据结构与算法之稀疏数组

线性结构和非线性结构。线性结构线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系。线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中存储的元素是连续的(地址)。链式存储的线性表称为链表。链表中的存储元素不一定是连续的(地址),元素节点中存放数据元素以及相邻元素的地址信息。线性结构常见的有:数组,队列,链表和栈。非线性结构非线性结构包括:二维数组,多维数组,广义表,数结构,图结构等。

my_air的博客 493

数据结构——>稀疏数组

文章目录一、稀疏数组1、定义2、储存3、储存方式1、普通储存2、链式储存a、普通链式储存b、行式链式储蓄c、十字链式储存4、代码实现a、普通数组——>稀疏数组b、稀疏数组——>普通数组5、应用场景 一、稀疏数组 1、定义 稀疏数组也叫稀疏矩阵,是普通数组的压缩,在这里我们可以说普通数组的无效数据量远远大于有效数据量 有效数据:在下方的例子中,1和2相对0就是有效数据 普通数组: 其稀疏数组表现形式为: 如果第一个例子没看懂,那我们再来举个例子 普通数组 在这一堆妹子里你是不是只想要杨幂和赵敏

林中有神君 244

分享下正在学习的知识:Java数据结构和算法(1)稀疏数组

在Java之中,数组是一个很重要的数据结构,但数组在内存中开辟空间却是一个很大的问题;比如说,当我开辟了一个二维数组的时候,系统会基于我声明的数组来开辟空间,但是当我数组里面有很大一部分存储了相同的数据,就会产生内存的浪费,如图所示 而在这种情况下,就会有很大一部分的内存被浪费,所以,我们就可以采用稀疏数组的方式来存储这个二维数组的主要数据,可能这种说法比较抽象,举个例子吧,把这个二维数组看成一个棋盘,把1看成是黑子,把2看成白子,但是我要是想保留棋盘地话,就需要保留这个二维数组,但是除了那俩个棋子其

qq_42378905的博客 408

java 二维数组转字符串_JAVA描述算法和结构(01):稀疏数组和二维数组转换

一、基本简介1、基础概念在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵;与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。定义非零元素的总数比上矩阵所有元素的总数为矩阵的稠密度。2、处理方式1)、记录数组一共有几行几列,有多少个不同的值 2)、把具有不同值的元素的行列及值记录在稀疏数组中,可以缩小程序代码的复杂度。3、图解描述稀疏数组...

weixin_39731682的博客 371

稀疏数组--转换,还原,保存

稀疏数组:当一个数组大部分元素为0,或为同一个值得数值是,用稀疏数组进行保存 记录数据:第一行,总行数,总列数,不同值的个数 如: 0|0|0|0|0|0|0|0|0|0|0| 0|0|1|0|0|0|0|0|0|0|0| 0|0|0|2|0|0|0|0|0|0|0| 0|0|0|0|3|0|0|0|0|0|0| 0|0|0|0|0|4|0|0|0|0|0| 0|0|0|0|0|0|5|0|0|0|0| 0|0|0|0|0|0|0|0|0|0|0| 0|0|0|0|0|0|0|0|0|0|0| 0|0

DSH自学记录 149

java实现稀疏数组用于压缩解压缩

java实现稀疏数组用于压缩解压缩

lingkt的博客 687

java稀疏数组

稀疏数组

weixin_68151004的博客 283

稀疏数组(详解)

稀疏数组 基本介绍 先看一个实际的需求 编写的五子棋程序中,有存盘退出和续上盘的功能。 分析问题: 因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据.->稀疏数组。 转化为稀疏数组 代码示例 package com.qf; public class SparseArray { public static void main(String[] args) { /** * 稀疏数组 0代表默认状态下 1代表的是黑色 2代表的蓝色

舒克日记的博客 411

1.稀疏数组之scala

案例 编写一个五子棋程序,有退出和续上盘的功能 分析问题: 因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据->稀疏数组 基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: 记录数组一共有几行几列,有多少个不同的值(有效值的个数) 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 稀疏...

weixin_43843960的博客 319
上一篇: JDK1.8新特性--重复注解
下一篇: redis5.0.5主从复制(哨兵机制)详解及解决redis主机设置了密码的无法实现主从复制的情况
suixinghero
博客等级 码龄7年 10粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值