数据结构与算法学习1-----稀疏数组

数据结构— 数组、特殊矩阵、稀疏矩阵 数组:是一组具有相同数据类型的数据元素的集合。数组元素按某种次序存储在一个地址连续的内存单元空间中。三角矩阵分为:上三角矩阵、下三角矩阵。稀疏矩阵:具有较多的零元素,且非零元素的分布无规律的矩阵。... 阅读详情

最近失眠很严重,所以想借空闲时间重温也是学习一下数据结构,通过某大神的视频这里主要呈现一些代码的实现和一些我个人的理解,如有出入,还请见谅

这篇是稀疏数组与二维数组的相互转换
为什么要用稀疏数组呢,我们说二维数组 是能展现一个图形上是四边形的数据,因为有行和列,
如果是一个11*11的二维数组,就是121个点,也就是存121份数据。我们可以把创建数组后没有操作的数据叫做默认数据
如果这121份数据几乎都是默认数据,用二维数组存放至文件或者磁盘 是不是很浪费空间呢,此时就可以用稀疏数组来实现
如下图(鄙人不善于画图)
稀疏数组
具体代码实现:

package array;

import org.junit.Test;

public class Array1 {
    

    //稀疏数组<-->二维数组   模拟五子棋存盘  1代表白子  2代表黑子  0代表五子
    @Test
    public void fun1() {
        int[][] originArray = new int[11][11];
        originArray[1][2] = 1;
        originArray[2][3] = 2;
        System.out.println("原始棋盘数组:");
        for (int[] rows : originArray) {
            for (int item : rows) {
                System.out.printf("%d\t", item);
            }
            System.out.println();
        }

        //拿到稀疏数组的第一行并赋值
        int rowNum = 1;
        for (int[] rows : originArray) {
            for (int item : rows) {
                if (item != 0) {
                    rowNum ++;
                }
            }
        }
        int [][] sparseArr = new int[rowNum][3];
        sparseArr[0][0] = 11;
        sparseArr[0][1] = 11;
        sparseArr[0][2] = rowNum - 1;

        //稀疏数组每一行赋值
        int index = 1;
        for (int row = 0; row < originArray.length; row++) {
            for (int col = 0; col < originArray[row].length; col++) {
                if (originArray[row][col] != 0) {
                    sparseArr[index][0] = row;
                    sparseArr[index][1] = col;
                    sparseArr[index][2] = originArray[row][col];
                    index++;
                }
            }
        }

        System.out.println("转换的稀疏数组是:");
        for (int[] rows : sparseArr) {
            for (int item : rows) {
                System.out.printf("%d\t", item);
            }
            System.out.println();
        }

        //转换回二维数组
        int [][] originArr2 = new int[11][11];
        for (int row = 1; row < sparseArr.length; row++) {
            int[] ints = sparseArr[row];
            originArr2[ints[0]][ints[1]] = ints[2];
        }

        System.out.println("转换回的二维数组是:");
        for (int[] rows : originArr2) {
            for (int item : rows) {
                System.out.printf("%d\t", item);
            }
            System.out.println();
        }
    }
    
}

当然并不是所有时候都适合用这个稀疏数组,这是有一个适用值的
如果有不同意见 欢迎讨论~

手把手教你用闲置安卓手机搭建个人收款系统(蓝鲸支付私有化部署实战) 本文详细介绍了如何利用闲置安卓手机搭建个人收款系统,实现私有化支付部署。通过开源技术栈和容器化方案,零成本构建安全、高效的支付网关,解决传统支付平台的数据安全和资金风险问题。特别适合个人开发者和小微企业主,无需复杂审批,资金实时到账,显著降低运营成本。 阅读详情

相关推荐

HA集群 执行 hdfs haadmin -transitionToActive 失败

最近把一个单NameNode集群变更为HA集群,过程中都很顺利,nn1和nn2两个NameNode都显示standby状态,但是把nn1或者nn2切换到active状态时就会报错抛异常。 查看master上namenode启动日志,如下: Incompatible clusterID for journal Storage Directory /home/hadoop-zero/bigdat...

qq_34727158的博客 1763

数据结构与算法学习day1之稀疏数组

数据结构与算法学习day1之稀疏数组

spechier的博客 335

保姆级教程:用rosbag录制和回放你的第一个ROS机器人数据(附C++/Python代码)

本文提供了一份详细的ROS机器人数据录制与回放教程,涵盖从命令行操作到C++/Python编程实现的全流程。通过rosbag工具,开发者可以高效记录和回放机器人运行时的传感器数据和控制指令,适用于故障复现、算法调试等多种场景。教程还包含高级技巧如时间同步和大文件处理,帮助用户快速掌握ROS数据管理核心技能。

weixin_29313239的博客 283

1.数据结构与算法学习笔记:稀疏数组

稀疏数组 当一个数组中大部分元素为0,或者为同一个值的数组是时,可以用稀疏数组来保存该数组 问题分析: ????编写的五子棋程序中,有存盘退出和续上盘的功能 分析:因为该二维数组的很多值都是默认值0,因此记录了很多没有意义的数据,可以采用稀疏数组来优化 稀疏数组的处理方式是: 记录数一共多少行多少列,有多少个不同的值 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 上图本来要存储42个值,转成稀疏数组只需要存27个值 java中数组索引从0开始 二维数组转稀疏数组的思

qq_45359386的博客 280

保姆级教程:在S32K312上配置C40驱动,实现Flash读写(基于RTD 4.4.2)

本文详细介绍了在S32K312微控制器上配置C40驱动实现Flash读写的全流程,基于RTD 4.4.2库。内容涵盖环境搭建、外设配置、Flash操作实战代码及高级应用场景,特别针对LLD驱动和FLS存储操作中的常见问题提供了解决方案,帮助开发者快速掌握嵌入式Flash存储技术。

weixin_28684757的博客 253

硬件工程师笔记——三极管Multisim电路仿真实验汇总

NPN型三极管:由N型半导体、P型半导体和N型半导体组成,即NPN结构。 PNP型三极管:由P型半导体、N型半导体和P型半导体组成,即PNP结构。 三极管的工作原理基于电流的控制和放大,其核心是基区对电流的控制作用。 将三极管等效为两个串联的二极管进行等效分析

XU157303764的博客 2635

Java尚硅谷数据结构与算法学习记录(1)-二维数组转稀疏数组并存入文件

package com.lylicoo.sparsearray; import java.io.*; /* 二维数组转稀疏数组的思路: 1、遍历原始的二维数组chessArr1,得到有效数据的个数sum 2、根据sum就可以创建稀疏数组sparseArr int[sum+1][3] 3、将原始二维数组的有效数据存入稀疏数组 稀疏数组转原始二维数组的思路: 1、读取稀疏数组的第一行,根据第一行...

qq_38715538的博客 233

PHP 网页游戏开发入门教程

我们还链接了一个名为 “game.js” 的 JavaScript 文件,稍后将在其中编写游戏逻辑。这只是一个简单的示例,但它演示了如何使用 PHP 和 JavaScript 开发一个基本的网页游戏。以下是一个示例游戏的源代码和解释。现在,您可以在浏览器中打开 “game.php” 文件,即可看到一个带有红色游戏角色的游戏板。在上述代码中,我们使用 JavaScript 创建了一个游戏角色元素,并将其添加到游戏板容器中。最后,我们需要将游戏元素的样式设置为绝对定位,以便能够正确地控制它们的位置。

KkowServer的博客 678

数据结构与算法学习笔记--------1.稀疏数组

数据结构与算法学习1------稀疏数组 - 1.应用场景-----什么时候用 一个数组中大部分元素为0,少部分数据不为0的情况,这时候使用一般的二维数组就非常浪费内存空间 - 2.具体实现------稀疏数组如何生成 稀疏数组共3列 分别表示原数组的行,列,和值。其中第一行的行字段值为原数组的行数,列为原数组列数,值为原数组不为0的数据个数。从第二行开始,依次将原数组中不为0的数据进行表示,具...

atomatom98的博客 758

华为面试手撕真题【字符串压缩】

华为面试手撕真题【字符串压缩】

MISAYAONE的博客 1万+

【STM32实物】基于STM32+ESP32+手机APP设计的智能宠物喂食系统

本文以STM32单片机为主控MCU,配有压力传感器、温湿度传感器、光照强度传感器、蜂鸣器等,设计了一款可以远程控制的宠物智能喂食系统。用户可以通过APP下达指令,控制宠物的喂食。每天可以根据设置的数据进行精准喂食,成本相对较低的宠物喂食装置。该装置使用步进电机控制投食仓门的开闭,通过压力传感器和时钟系统控制每日的投喂量和投喂时间。每次投食后蜂鸣器会提醒宠物进食,树立每日定点进食的习惯。经测试得出,该设备确实能实现每日定时定量投喂。系统整体运行顺畅,所有预期功能得以实现。它非常适合解决宠物主人不在家时影响宠物

嵌入式阿齐Archie 2万+

java数据结构与算法 学习笔记1:稀疏数组转换的思路

一、稀疏数组的应用场景 基本介绍:当一个数组中大部分元素为0或同一个值的数组时,可以使用稀疏数组来保存该数组。 处理方法: 记录数组一共有几行几列,有多少个不同的值。 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。 应用场景:编写五子棋程序时,实现存盘退出和续上盘的功能。 二、 4. 二维数组转化为稀疏数组的思路: 遍历原始的二维数组,得到有效的数据的个数sum 根据sum就可以创建稀疏数组,sparseArr int[sum+1][3] 将二维数组的有效数据存入到稀

Neflibata_mo的博客 260

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

数据结构与算法st1:稀疏数组的学习(五子棋的存盘与续盘)

相当于2维数组与稀疏数组之间的转换问题,稀疏数组的存储需要IO流的知识进行完成 在这里插入代码片

qq_39227541的博客 1021

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java学习笔记(数据结构与算法1)数组和稀疏数组的相互转换,传入文件,从文件读取稀疏数组,代码实现

为了节约空间,我们常用稀疏数组来存储大部分元素为0的数组。 这里不对稀疏数组做过多解释,只略微解析代码。 本代码秉承着面向对象的思想,将稀疏数组封装成一个类。 构造方法可以传入地址,也可以传入数组 当在构造方法中传入地址时,会调用Input方法从文件中读入稀疏数组,当构造方法传入数组时,会初始化对象的数组属性。 类中还包含稀疏数组和数组的转换方法changeXiShuArray和changeArray 同时还有打印方法。 下面方法的执行结果如下:实现了使用4*3的数组将5*5的数组读入...

lyl1234564的博客 212

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

算法思维重塑:从数据科学家视角看doocs/leetcode的实战价值

当你在处理百万级用户行为数据时,突然发现查询性能下降了80%;当你试图优化推荐算法,却卡在时间复杂度分析上;当你需要实时统计用户留存率,却不知道如何高效实现——这些问题背后都隐藏着同一个核心:算法思维。 作为数据科学家,你可能精通Python、SQL和机器学习框架,但在面对复杂数据处理和性能优化时,算法能力往往成为决定成败的关键。doocs/leetcode项目不仅是一个刷题平台,更是一个算法思

gitblog_07886的博客 477

新星计划Day4【数据结构与算法】 稀疏数组与队列

新星计划Day4【数据结构与算法】 稀疏数组与队列 👩‍💻博客主页:京与旧铺的博客主页 ✨欢迎关注🖱点赞🎀收藏⭐留言✒ 🔮本文由京与旧铺原创,csdn首发! 😘系列专栏:java学习 💻首发时间:🎞2022年4月28日🎠 🎨你做三四月的事,八九月就会有答案,一起加油吧 🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦 🎧最后的话,作者是一个新人,在很多方面还做的不好,欢迎大佬指正,一起学习哦,冲冲冲 🛒导航小助手🎪 文章目录新星计划Day4【数据结构与算法】 稀疏数组与队列在这里插入图片描述🛒导

qq_46272491的博客 2293

【数据结构与算法 1】稀疏数组

一、稀疏数组 1、概念 当一个数组中部分元素是0,或者为同一个值的数组,可以使用稀疏数组来保存该数据。 稀疏数组的处理方法: 记录数组一共有几行几列,有多少个不同的值; 把具有不同值的元素的行列和值记录在一个小规模的数组中,从而缩小程序的规模。 2、存储 原数组中存在大量的无效数据,占据了大量的存储空间,真正有用的数据却少之又少; 压缩存储可以节省存储空间以避免资源的不必要的浪费,在数据序列化到磁盘时,压缩存储可以提高IO效率。 二、代码实例 package com.atguigu.s

学Java,找哪吒 8886

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

小总结:将二维数组转换为稀疏数组的:首先遍历二维数组,统计非零元素的个数。接着再次遍历二维数组,将非零元素的行、列、值信息保存到稀疏数组中。然后根据稀疏数组的后几行数据,将对应的值赋给二维数组。稀疏数组是一种特殊的数组数据结构,用于表示大部分元素值为默认值或者为零的数组。它通过只存储非默认值或非零元素的索引和对应的值,来减少内存占用。当数组中的元素值发生变化时,可以根据需要添加或删除相应的索引和值,以保持数组的稀疏性。:稀疏数组使用索引来映射元素值,使得对数组的访问更加高效。将稀疏数组转换为二维数组。

Benmao的博客 1289

Java数据结构和算法 day01 稀疏数组与队列

文章目录第一章 数据结构和算法概述几个经典的算法面试题数据结构和算法的重要性数据结构与算法框架数据结构和算法的关系(了解!!!)编程中实际遇到的几个问题(了解)线性结构和非线性结构第二章 稀疏数组与队列稀疏数组的应用场景稀疏数组转换的思路分析及实现队列的应用场景和介绍数组模拟队列的思路分析及实现数组模拟环形队列思路分析及实现Leetcode每日一练[1. 两数之和](https://leetcode-cn.com/problems/two-sum/)[5. 最长回文子串](https://leetcode-

杨丙寅 6807

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

稀疏数组1、定义2、压缩办法3、压缩代码实现4、持久化效果5、稀疏数组还原 最近一段时间一直在弄个小项目,但是学习过程中发现数据结构与算法这块简直是残废,于是变写项目边补一补,慢慢记录记录。 1、定义 稀疏数组是对特定二维数组的一个压缩;这个二维数组是一个包含较少特定有效数值的二维数组,如下图: 从图中我们可以看到,这个二维数组的有效数值只有两个;但是我们对这个二维数组进行持久化时,也会将这些0...

a760352276的博客 418

[数据结构与算法] 邂逅数组与队列

数据结构与算法一 线性结构与非线性结构稀疏数组及五子棋问题二维数组与稀疏数组的转化领会遍历二维数组的两种方式队列和银行排队问题银行排队问题队列与队列模拟 学习完部分大数据知识之后, 大数据阶段的学习就暂时告一段落了. 为了能够进入大厂修习, 因此特别在这端时间里通过学习韩顺平老师的数据结构与算法来复习下数据结构与算法. 与其说是复习不如说是预习,嘿嘿.我将不同于以往的写博方式, 重新和大家一起...

时间静止 4196

稀疏数组与队列

之前学完了Java SE的知识,掌握了面向对象的编程思想,但对集合、多线程、反射、流的使用等内容理解的还不是很深入,打算再学习数据结构与算法的同时,在空闲的时间里去图书馆看《Java 核心技术 卷 I》这本书,很多大佬对这本书很推崇,之前在图书馆也看过其他Java的书籍,经过对比,这本书确实写的很有内涵;之后也会把看书过程中的收获写出来分享给大家,同时,连续的更新博客也是对自己学习的督促。终极目标:超越大我两级的学长,拿到大厂sp,年薪40w+!!! 一、数据结构和算法简介 二、稀疏数组

weixin_49329785的博客 717

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

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

my_air的博客 493

从1开始学Java数据结构与算法——稀疏数组

从1开始学Java数据结构与算法——稀疏数组概念处理方法举例说明案例引入问题分析:存在的问题:代码实现 为什么说从一开始学呢,这类的博客,是之前有C或C++数据结构基础和Java基础,重新刷一遍Java数据结构时留下的,作为学习笔记放上来,在文章最后放上某站的学习视频连接,可以去看,视频讲的还是非常好的,下面开始进入正题。 概念 当一个数组中大部分元素为0,或者为同一个值的时候,用一种方法,将零或...

weixin_43851232的博客 1147
上一篇: 记一次奇怪的白屏之旅
下一篇: 数据结构与算法学习2-----数组实现队列
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值