首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏全栈程序员必看

    数组稀疏数组

    文章目录 一,稀疏数组 1.定义 2.存储 3.存储方式 1.普通存储 2.链式存储 a.普通链式存储 b.行式链式存储 c.十字链式存储 4.代码实现 3.将稀疏数组存到此磁盘中 4.从磁盘中读取稀疏数组 : 11 11 2 1 2 1 2 4 2 2.存储 刚说到稀疏数组是一种压缩后的数组,为什么要进行压缩存储呢 Description: 稀疏数组 ---> 数组中有很多无效数据,压缩数组 * @Author: Kevin * @CreateDate: 2019/7/2 22:39 * @UpdateUser: "); /** * 稀疏数组 *

    * 11 11 2 * 1 2 1 * 2 4 2 *

    */ //得到非0数据数 int sum = "); /** * 稀疏数组 *

    * 11 11 2 * 1 2 1 * 2 4 2 *

    */ //得到非0数据数

    1.4K40编辑于 2022-07-22
  • 来自专栏MyTechnology

    稀疏数组

    1.1 稀疏数组介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 将i存到稀疏数组[0][0]的位置 将j存到稀疏数组[0][1]的位置 将count存到稀疏数组[0][2]的位置 将各个有效值的行列存到稀疏数组下一行,例如[1][0]=行,[1][1]=列,[1][ 1.2 转换思路 二维数组稀疏数组的思路: 遍历原始的二维数组,得到有效数据的个数sum 根据sum就可以创建稀疏数组sparseArr int[sum+1][3] 将二维数组的有效数据数据存入到稀疏数组 稀疏数组转原始的二维数组的思路: 1.先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组,比如上面的chessArr2 =int[5][6] 2.在读取稀疏数组后几行的数据,并赋给原始的二维数组即可 ,根据第一行的数据,创建原始的二维数组,比如上面的`chessArr2 =int[11][11]` * 2.在读取稀疏数组后几行的数据,并赋给原始的二维数组即可 */

    61130发布于 2021-01-18
  • 来自专栏生如夏花绚烂

    稀疏数组

    稀疏数组 当一个数组大部分为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组 稀疏数组的处理办法是: 1.记录数组一共有几行几列,有多少个不同的值 2.把具有不同值的元素的行列及值记录在一个小规模的数组 2.如果反过来原来二维数组的有效值只有8个,那么原来的二维数组还是 7*6=42,如果转换为稀疏数组则是9*3=27,可以看到有明显的压缩了。 思路分析 二维数组转换为稀疏数组 1.遍历原始的二维数组,得到要保存的有效数据的个数(sum) 2.根据sum就可以创建稀疏数组 sparseArr int[sum+1][3],即行=sum+1行,列永远等于 1.先读取稀疏数组的第一行(因为第一行数据保存了原来二维数组的行列和有效数据的个数) 2.根据第一行的数据数据创建原始的二维数组 chessArr2 = int[11][11] 3.在读取稀疏数组后几行的数据 11 11 2 1 3 1 2 4 2 稀疏数组转换后的原始二维数组 0 0 0 0 0 0 0

    65220编辑于 2022-09-14
  • 来自专栏Java架构师必看

    稀疏数组

    ,2020.2 IDEA 激活码 一、稀疏数组的定义 ---- 稀疏(sparsearray)数组:可以看做是普通数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组。 当遇到此种情况时,可以使用稀疏数组。 ? 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 【1】将上面类似的二位数组棋盘保存到稀疏数组中,并存放至外部备份文件 sparsearray.text 中:稀疏数组可以简单的看作为是压缩,在开发中也会使用到。 稀疏数组输出的 sparsearray.text 内容如下: ? 【3】将稀疏数组文件中的内容恢复至传统的二维数组棋盘; /** * 将稀疏数组文件中的内容恢复至传统的二维数组棋盘 */ public class SparseArrayClass { public

    85030发布于 2021-04-30
  • 来自专栏学习笔记持续记录中...

    稀疏数组

    当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组稀疏数组的处理方法是: 1)记录数组一共有几行几列,有多少个不同的值 2)把具体不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。 ? 二维数组稀疏数组 public class SpareseArray { public static void main(String[] args) { /** chessArr1[2][3] = 2; /** * 输出原始的二维数组 */ System.out.println("原始的二维数组 创建稀疏数组,行数=sum+1 ,多出来的1行是对稀疏数组中总行数、总列数以及非0个总个数的 sparseArr[0][0] = chessArr1.length; sparseArr

    50910发布于 2020-03-17
  • 来自专栏半月无霜

    稀疏数组

    稀疏数组 一、介绍 稀疏数组可以看作是普通数组的压缩,当一个数组中大部分元素为0或同一个值时,可用稀疏数组来保存该数组。 由此可以发现,当一个数组上出现大量无用的数组时,我们可以使用一些方法将其压缩成稀疏数组进行存储,等到使用的时候再进行解压还原。 ,里面的有效值个数有三个, 那么转为稀疏数组后,将会变成一个4*3的稀疏数组。 遍历原数组,得到原数组中有效值的个数num 创建一个稀疏数组,大小为(num+1)*3 稀疏数组的第0行存放,原数组的行个数,列个数,以及有效值的个数 将有效值的行、列、值转换写入稀疏数组中 [] args) { int[][] arrays = new int[11][11]; arrays[2][3] = 1; arrays[2][4] =

    57620编辑于 2023-03-03
  • 来自专栏JusterZhu

    02 稀疏数组

    2.问题分析 上面棋盘可用二维数组进行记录,但是二维数组的很多值是默认值0,因此记录了很多没有意义的数据->稀疏数组 3.基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组 稀疏数组的处理方法是: 记录数组一共有几行几列,有多少个不同的值。 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩程序的规模。 4.应用实例 (1)使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等) (2)把稀疏数组存盘,并且可以重新恢复原来的二维数组 public class MySparseArray { }"); } Console.WriteLine("5.稀疏数组还原二维数组"); //首先还原二维数组的大小 //输出还原的稀疏数组 for (int i = 0; i < tempSparseArray2.GetLength(0); i++)

    48010编辑于 2022-12-07
  • 来自专栏吃猫的鱼个人博客编程笔记

    稀疏数组详解

    稀疏数组 基本介绍 当一个数组中大部分元素为0,或者同一个值的数组时,可以使用系数数组来保存该数组稀疏数组的处理方法是: 记录数组一共有几行几列,有多少个不同改的值。 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 稀疏数组转换 二维数组稀疏数组的思路: 遍历 原始的二维数组,得到有效数据的个数sum 根据sum就可以创建 系数数组sparseArr intsum+1 将二维数组的有效数据存入到稀疏数组 稀疏数组转原始的二维数组的思路 先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组。 、 在读取稀疏数组后几行的数据,并赋给原始的二维数组即可。 ] = 2; a[3][5] = 2; a[5][5] = 10; //首先判断当前数组的大小 int row = 6;

    78040编辑于 2023-03-02
  • 来自专栏Java后端开发博客

    稀疏数组和队列

    # 稀疏数组和队列 稀疏 sparsearray 数组 先看一个实际的需求 稀疏数组基本介绍 应用案例 代码实现 课后作业 队列 队列的一个使用场景 队列介绍 数组模拟队列思路 代码演示 数组模拟环形队列 分析问题 因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据.->稀疏数组。 # 稀疏数组基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组稀疏数组的处理方法是: 记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 稀疏数组举例说明 # 应用案例 使用稀疏数组,来保留类似前面的二维数组 //1.先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组,比如上面的chessArr2 =int[11][11] int chessArr2[][] = new int[sparseArr 得到的稀疏数组为: 11 11 2 1 2 1 2 3 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 0 0 0

    60020编辑于 2022-12-30
  • 来自专栏JavaEE

    稀疏数组 & 环形队列

    0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 …… 当一个数组中大部分元素是0时,或者为同一个值时,就可以用稀疏数组来保存该数组 所以稀疏数组一行应该是: 行 列 值 6 7 8 稀疏数组第二行开始,每行记录的是,原始数组中非0值所在的行、所在的列、值的大小。 4、原始数组稀疏数组相互转换思路: 原始数组稀疏数组: 遍历二维数组得到有效数组的个数count; 根据count就可以创建稀疏数组 int[count + 1][3]; 将有效数组存入稀疏数组 稀疏数组转原始数组 : 读取稀疏数组第一行,根据第一行数组可以知道原始数组有几行几列,然后创建原始数组; 读取稀疏数组后几行的数组,赋值给原始数组即可 5、代码实操: public class SparseArray { [11][11]; arr1[1][2] = 1; arr1[2][3] = 2; // 原始数组稀疏数组 // 1.

    63420发布于 2020-09-01
  • 来自专栏学习

    JAVA实现稀疏数组转化

    1.稀疏数组使用场景 1.数据稀疏性较高的情况:当大部分元素的值相同或为默认值(如 0),而只有少数元素具有不同的值时,使用稀疏数组可以节省存储空间。 22.转化为稀疏数组时如图: 此时我们就将普通数组中的非0数值记录在稀疏数组中,从而简化了数组,空间利用效率大大提升,提高了运算效率。 2.思路 既然要求数组中非零的值的个数,那么就要遍历数组求出值的个数,在表示出值的行数与列数,并且在初始化稀疏数组时要知道这个二维数组的行数,并将普通二维数组中的值以及对应的行和列放入稀疏数组中。 3.实现稀疏数组的步骤 1.创建一个二维数组,并用增强循环实现遍历 2.遍历这个二维数组,得出非零数据的个数 3.创建对应的稀疏数组,列数为3列,行数要根据非零数值的个数来表示 4.将非零数值的行列,以及它本身的值赋值给稀疏数组对应的位置中去 小编这里使用的否循环遍历二维数组,将非零数的行,列,值赋值给对应的稀疏数组,并且用一个变量来表示稀疏数组的行,所以每次循环都要加一,即一行赋值完成后进行第二行的赋值,0,1,2,表示的是稀疏数组的行,列

    43310编辑于 2024-09-24
  • 来自专栏SpringBoot教程

    Java稀疏数组的应用

    0,因此记录了很多没有意义的数据 =>所以采用稀疏数组 处理流程: 1)棋盘 二维数组 => (稀疏数组) =>写入文件【存档功能】 2)读取文件 =>稀疏数组 =>二维数组 => 棋盘 【接上局】 稀疏数组存储结构 稀疏数组的处理方法是: 1)记录数组一共有几行几列,有多少个不同的值 2)把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序占用的空间 整体思路 二维数组稀疏数组的思路 : 1、遍历原始的二维数组,得到有效数据的个数 sum 2、根据sum就可以创建稀疏数组 sparseArr int[sum+1][3] 3、将二维数组的有效数据存入到稀疏数组 稀疏数组转原始二维数组的思路 : 1、先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组 2、再读取稀疏数组后几行的数据,并赋值给 原始的二维数组 代码示例 public static void main(String =》二维数组 //1.先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组 int[][] chessArr2 = new int[sparseArr[0][0]][sparseArr

    49140编辑于 2023-04-06
  • 来自专栏全栈程序员必看

    稀疏数组(最详解)「建议收藏」

    概念 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组稀疏数组的处理方式是:记录数组一共有几行几列,有多少个不同值;把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模 如下图:左边是原始数组,右边是稀疏数组 代码实现 public :黑棋, 2:白棋 int [][] a = new int[11][11]; a[1][2] = 1; a[2][3] = 2; System.out.println sum; //遍历二维数组,将非0的值存放到稀疏数组 int count = 0; for (int i = 0; i < a.length; i++ :"); //读取稀疏数组 int[][] c = new int[b[0][0]][b[0][1]]; //还原数组的值 for (

    28120编辑于 2022-11-17
  • 来自专栏编程

    数据结构之稀疏数组

    概念 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组稀疏数组的处理方式是:记录数组一共有几行几列,有多少个不同值;把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模 如下图:左边是原始数组,右边是稀疏数组 解析 代码 package [1][2] = 1; chessArr1[2][3] = 2; // 输出原始的二维数组 System.out.println("原始的二维数组"); 创建对应的稀疏数组 int[][] sparseArr = new int[sum + 1][3]; // 给稀疏数组赋值 sparseArr[0][0] ,根据第一行的时间,创建原始数组 int[][] chessArr = new int[sparseArr[0][0]][sparseArr[0][1]]; // 2.再读取稀疏数组后几行的数据

    23510编辑于 2024-10-28
  • 来自专栏分享技术

    JavaScript 中的稀疏数组世界

    在这篇文章中,我将谈论:✅ 什么决定了数组的长度✅ 稀疏数组和稠密数组的区别✅ 如何处理稀疏数组神秘数组长度的案例还记得第一次你以为自己掌握了数组吗?我也是。我以为数组的长度是由定义的元素数量决定的。 稀疏数组让我们创建一个空数组:let arr = [] ✅看起来无害,对吧?现在让我们在索引 2 处放置一个元素:arr[2] = 5 ✅你觉得 arr.length 会是多少? 确实,这不是你每天都会遇到的数组。这就是我们所谓的稀疏数组。 如果你想知道稀疏数组是什么,试着将数组记录在控制台:console.log(arr) -> [ <2 empty items>, 5 ] 你会注意到值 5 之前有两个空位。 稀疏数组遇上 map( ) 函数一个惊喜那么,当你在我们的稀疏数组上运行 map() 函数时会发生什么呢?

    1.6K30编辑于 2023-11-12
  • 来自专栏cjz的专栏

    稀疏数组(Java代码基本实现)

    稀疏数组简单介绍 当一个数组中大部分元素是 0 或者为同一个值的数组时,可以使用稀疏数组来保存该数组稀疏数组处理方法: 记录数组一共有几行几列,有多少个不同的值。 [11][11]; chessArr1[1][2] = 1; chessArr1[2][3] = 2; //输出原始二维数组 System.out.println \t%d\t%d\t\n",sparseArr[i][0],sparseArr[i][1],sparseArr[i][2]); } //把稀疏数组 》》》原始的二维数组 int[][] chessArr2 = new int[sparseArr[0][0]][sparseArr[0][1]]; //把稀疏数组赋值给原来的二维数组 = sparseArr[i][2]; } //遍历还原后的二维数组 System.out.println("还原后的二维数组---");

    37930编辑于 2022-12-21
  • 来自专栏传说之下的花儿的日常学习笔记

    GO数据结构(一)——稀疏数组

    稀疏数组 稀疏数组(sparsearray) 基本介绍: 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 本质上就是压缩数组稀疏数组的处理方法:  1. 记录数组一共有几行几列,有多少个不同的值。  2. 把具有不同值的元素的行列以及值,记录在一个小规模的数组中,从而缩小程序的规模。 1.1 实际问题(棋盘) 如下面的二维数组,我们可以假设成是一个棋盘,1代表白子,2代表黑子,现在我们要对其进行存盘以及续盘的操作,如果我们将整个数组都存起来,势必会造成内存的浪费,那么我们可以考虑使用稀疏数组来解决这个问题 0 var chessMap [11][11]int chessMap[1][2] = 1 chessMap[2][3] = 2 // 定义一个切片 var sparseArr []ValNode 表示w),1(表示x)三个数字相加得到的 // rwx 对应4,2,1 // 那么只读的权限用4表示[r--], // 读写用6(4+2)表示[rw-], // 读写加执行用7(4+2+1)表示

    32210编辑于 2023-04-16
  • 来自专栏站长的编程笔记

    【说站】java稀疏数组是什么

    java稀疏数组是什么 特点 1、它可以压缩数据,减少内存空间的使用。 过程 2、记录数组元素的坐标和值。 3、稀疏数组有3列,分别是行、列、值,行数是原数组不同值的数加1; array[0]记录一组行数和列数,以及不同值的数; 然后每行记录一个值在原数组的行列下标记和自己的值。 = 0) {                 sum++;             }         }     }       //2.创建对应的稀疏数组     int sparesArr[][] ("得到的稀疏数组为:");     printArray(sparesArr);     System.out.println();       //下面将稀疏数组恢复成二维数组     //先读取稀疏数组的第一行元素 ,根据其数据,创建原始的二维数组     int chessArr2[][] = new int[sparesArr[0][0]][sparesArr[0][1]];         //读取稀疏数组后几行的元素

    44440编辑于 2022-11-23
  • 来自专栏数据分析与挖掘

    golang数据结构之稀疏数组

    掌握知识: 数组的初始化和赋值 结构体的初始化和赋值 字符串和整型之间的转换以及其它的一些操作 类型断言 读取文件 写入文件 对稀疏数组进行压缩 package main import ( " printArr(chessMap [11][11]int) { //打印数组 for _, v1 := range chessMap { for _, v2 := range value interface{} } var sparseArr []valNode func doParseArr(chessMap [11][11]int) []valNode { //稀疏数组 col: 11, value: 0, } //初始化存储稀疏数组 sparseArr = append(sparseArr, val) for i, )) } return sparseArr } func writeParseArr(sparseArr []valNode, filepath string) { //将稀疏数组存储

    47820发布于 2020-08-26
  • 来自专栏IT技术圈(CSDN)

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

    二、根据二维数组稀疏数组 遍历二维数组,得出有效数据的个数 sum 根据有效数据的个数,确定稀疏数组 sparseArr[sum+1][3] 遍历二维数组,给稀疏数组赋值 /** * *二维数组稀疏数组 //给稀疏数组的第一行赋值 //sparseArr[0][0]=二位数组的行, //sparseArr[0][1]=二位数组的列, //sparseArr[0][2]=二位数组中的有效值 sparseArr[0][0]=arr.length; sparseArr[0][1]=arr[0].length; sparseArr[0][2]=sum; //遍历二位数组,给稀疏数组赋值 三、根据稀疏数组转二维数组 根据稀疏数组的第一行确定二位数组的大小 遍历稀疏数组给二维数组赋值 /** * *稀疏数组转二维数组 * @author 蜡笔小新 * */ public class }, {3,2,1}, {5,5,3}, {7,1,4}, {8,7,9} }; //根据稀疏数组的第一行确定二位数组的大小 int [][]arr

    64710发布于 2020-09-15
领券