Java数组07——稀疏数组】的更多相关文章

稀疏数组 总结: 记录有效的坐标: 记录原始做表的大小和有效值的个数 记录每一个有效值的坐标 ,变成一个新的数组 age:  package array; ​ public class ArrayDemon09 {     public static void main(String[] args) {         //1. 创建一个二维数组 11*11 0:没有棋子 1: 黑棋         int[][] array1=new int[11][11];         array1[1…
在编程中,算法的重要性不言而喻,没有算法的程序是没有灵魂的.可见算法的重要性. 然而,在学习算法之前我们需要掌握数据结构,数据结构是算法的基础. 我在大学的时候,学校里的数据结构是用C语言教的,因为对C语言也不是很了解,所以掌握得不是特别好,在网上找的一些学习资料里也基本都是用C语言来进行数据结构的教学. 那么,从本篇文章开始,我将用Java语言来介绍数据结构,当然,数据结构过后就是算法. 线性结构和非线性结构 线性结构 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系:…
多维数组 多维数组可以堪称数组的数组,比如二维数组就是一个特殊的一维数组,其中每一个元素都是一个以为数组 而且数组 int a[][]= new int[2][3]; public class ArrayDemo05 { public static void main(String[] args) { /* 1,2 array[0] 2,3 array[1] 3,4 array[2] 4,5 array[3] */ int[][] array ={{1,2},{2,3},{3,4},{4,5}}…
1.需求 编写的五子棋程序中,有存盘退出和续上盘的功能.因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据,为了压缩存储所以采用稀疏数组. 2.基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组. 处理方法: 记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 3.应用实例 1)使用稀疏数组,来保留类似前面的二维数组(棋盘.地图等等) 2)把稀疏数组存盘,并且可以从新恢复原来的二维…
public static void main(String[] args) { // 创建一个原始的二维数组 9*9 int chessArr1[][] = new int[9][9]; // 0表示没有棋子,1表示黑子,2表示白子 chessArr1[1][2] = 1; chessArr1[2][3] = 2; chessArr1[5][2] = 2; chessArr1[7][6] = 2; chessArr1[8][4] = 1; System.out.println("原始的二维数组…
首先我们看一个需求 在11 * 11 的五子棋的棋盘中 我们使用0代表十字交叉点也是无效的数据 用1代表黑棋 用2代表蓝棋 那么所看到的棋盘如下 改用数字显示后就如一下样式 现在我们需要将怎个棋盘存储起来,但是又发现有很多为0 的无效数据,那么我们就需要考虑将有效的数据存储无效的数据不用存储起来 这样我们就可以使用稀疏数组将数据存储起来 稀疏数组 稀疏数组有一定会有三行,列是随有效数据的个数而变化的,先看一个稀疏数组的大概样子 二维数组转换为稀疏数组的思路 第一部 需要遍历稀疏数组,获取有效数据…
今天写Vue时遇到一个奇怪问题,需要监控网页上的input 是否都有值 // var blanks = new Array(number); // blanks的监控属性 var emptyNumber = blanks.filter((ele)=>!ele).length // 0 blanks为空的个数 长度为0时所有的input都有值 发现这个结果总是为0 在浏览器直接输入,返回值如下 var arr = new Array(2) // [undefined × 2] arr[0] //…
相关链接 [学习总结]尚硅谷2019java数据结构和算法 github:javaDSA 目录 稀疏数组 队列 稀疏数组 稀疏数组介绍 图示 应用实例 代码实现 SparseArray.java:与二维数组的转换,包括二维转稀疏,和稀疏转二维. 课后练习 队列 引入 先进先出,有序列表 可用数组或链表实现.数组(顺序存储),链表(链式存储). 图示:使用数组模拟队列 数组模拟队列 思路: 问题: 目前数组不能复用,一次性. 使用取模的环形队列来改进 代码实现: ArrayQueueDemo.ja…
数据结构必要知识 线性结构 线性结构是最常用的数据结构,数据元素之间存在一对一的线性关系. 线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构.顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的. 链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻的地址信息. 线性表结构常见的有:数组,队列,链表,栈 非线性结构 非线性结构包括:二维数组,多维数组,广义表,树结构,图结构(这就不是一对一了) 稀疏数组 基本介绍 定义: 当一个数组中大部分的元素为…
目录 Java的稀疏数组的简单代码实现 一.稀疏数组的基本概念 二.稀疏数组的Java代码实现思路 三.稀释数组的Java代码实现 四.结语 Java的稀疏数组的简单代码实现 一.稀疏数组的基本概念 当二维数组的很多值是默认值 0,或者有很多相同的值时,记录了很多没有意义的数据,因此,在这里,我们需要引入一个新的概念--稀疏数组 在稀疏数组中,每行分别有三个元素:行,列,值.在稀疏数组的第一行,行表示原数组的行数,列表示原数组的列数,值表示原数组非0数据的个数:接下来的稀疏数组的几行中,行表示非…
java基础 以下内容为本人的学习笔记,如需要转载,请声明原文链接   https://www.cnblogs.com/lyh1024/p/16720908.html Ø 冒泡排序原理: 比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置: 每一次比较,都会产生出一个最大,或者最小的数字: 下一轮则可以少一次排序: 依次循环,知道结束! 冒泡排序的时间复杂度为O(n²). 代码: import java.util.Arrays; public class SortTest…
本文源码:GitHub·点这里 || GitEE·点这里 一.基本简介 1.基础概念 在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵:与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵.定义非零元素的总数比上矩阵所有元素的总数为矩阵的稠密度. 2.处理方式 1).记录数组一共有几行几列,有多少个不同的值 2).把具有不同值的元素的行列及值记录在稀疏数组中,可以缩小程序代码的复杂度. 3.图解描述 稀疏数组表示 [0] 3 4 4 二维…
1.稀疏数组 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组. 稀疏数组的处理方法是: 1.1记录数组一共有几行几列,有多少个不同的值 1.2把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 I 2.二维数组转稀疏数组的思路 2.1.遍历原始的二维数组,得到有效数据的个数sum 2.2.根据sum 就可以创建稀疏数组sparseArr intsum+1 2.3.将二维数组的有效数据数据存入到稀疏数组 3.稀疏数组转原始的二维数组的思路 3…
一.概述 1.概念 2.处理方法 3.示例 原数组如下: 转换为稀疏数组如下: 二.代码 1.主方法 @Testpublic void SparseTest() { // 创建一个原始的二维数组 11 * 11 // 0: 表示没有棋子, 1 表示 黑子 2 表蓝子 int[][] arr = new int[11][11]; arr[1][1] = 1; arr[2][3] = 2; arr[4][5] = 2; System.out.println("原始数组"); for (in…
1.定义 稀疏数组可以看做是普通二位数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组,关于稀疏数组的运用有五子棋盘,地图等.. *当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组如图 2.好处 * 原数组中存在大量的无效数据,占据了大量的存储空间,真正有用的数据却少之又少 *把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 * 压缩存储可以节省存储空间以避免资源的不必要的浪费,在数据序列化到磁盘时,压缩存储可以提高IO效…
数据结构与算法--稀疏数组 转换方法 记录数组有几行几列,有多少个不同的值 把不同的值的元素的行列,记录在一个小规模的数组中,以此来缩小数组的规模 如图: 二维数组转稀疏数组 对原始的二维数组进行遍历,并得到有效的数据个数(这里用sum表示) 根据sum的个数,创建稀疏数组 sparseArr int[sum+1][3] 将二维数组的有效数据存入到稀疏数组中 PS:sum+1是因为稀疏数组的第一行存放的是数组的行列数以及有效数值个数 稀疏数组转二维数组 先读取稀疏数组中的第一行,并且根据稀疏数组…
1 package com.aixuexi.contact; 2 3 public class SpareArray { 4 public static void main(String[] args) { 5 6 // 创建一个原始的二维数组 11 * 11 7 int arrchess1[][] = new int[11][11]; 8 //二维数组 赋值 9 arrchess1[1][2] = 1; 10 arrchess1[2][3] = 2; 11 arrchess1[4][5] =…
稀疏数组(数据结构) 场景 需求:编写五子棋游戏中,有存盘和续上盘的功能. 分析问题:因为该二维数组的很多值默认都是0,因此记录了很多没有意义的数据. 解决:稀疏数组 稀疏数组介绍 当一个数组大部分元素为0,或者为同一值的数组时,可以用稀疏数组来保存该数组. 稀疏数组的处理方式是: 记录数组一共有几行几列,有多少个不同值. 把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模. 如下图:左边是原始数组,右边是稀疏数组 //1.创建一个二维数组 11*11,0:没有棋子,1:黑…
数组 数组是相同类型数据的有序集合. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成. 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们.(下标从0开始) 数组声明创建 首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量的语法: dataType[] arrayRefVar; // 首选的方法 或 dataType arrayRefVar[]: // 效果相同 但不是首选方法 Java语言使用new操作符来创建数组,语法如下: dataTyp…
一.线性结构和非线性结构 线性结构: 1)线性绪构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 2)线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构.顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的3)链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息4)线性结构常见的有:数组.队列.链表和栈,后面我们会详细讲解. 非线性结构: 非线性结构包括:二维数组,多维数组,广义表,树结构,图结构 二.稀疏数组 基本介绍…
卑鄙是卑鄙者的通行证,高尚是高尚者的墓志铭. --北岛<回答> 看北岛就是从这两句诗开始的,高尚者已死,只剩卑鄙者在世间横行. 本文为读 lodash 源码的第一篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash gitbook也会同步仓库的更新,gitbook地址:pocket-lodash 引言 你可能会有点奇怪,原生的 slice 方法基本没有兼容性的问题,为什么 lodash 还要实现一个 slice 方法呢?而且 lodash 中的 slice 方法还要比原生…
稀疏数组(sparseArray) 基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组. 稀疏数组的处理方法是: 1.记录数组一共有几行几列,有多少个不同的值 2.把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 稀疏数组举例: 其中右边数组第一行 6=左边数组有多少行,7=左边数组有多少列,8=左边数组有多少个不是0的值,然后下面8行保存的是数据的坐标和值. 实际应用 编写的五子棋程序中,有存盘退出和续上盘的功能. 分析问题:因为…
1 实际需求 1.1 需求提出 编写五子棋程序,有存盘退出和续上盘的功能. 实现思路: 存盘退出: 定义一个二维数组,默认值是0,黑子表示1,蓝子表示2,然后将二维数组通过流存储到文件中. 换言之:五子棋-->二维数组-->文件. 续上盘: 从文件中通过流读取二维数组,然后将1和2的渲染到五子棋盘上. 换言之:文件-->二维数组-->五子棋. 1.2 分析问题 因为二维数组有很多默认值为0,因此记录这些0很没有意义.需要通过稀疏数组来解决. 此时的存盘退出: 五子棋-->二维…
1.介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组.    稀疏数组的处理方法是: 1.记录数组一共有几行几列,有多少个不同的值    2.把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 2.分析 3.代码实现 public class SparseArray { public static void Test() { int[][] chessArr = new int[][]; // int sum = ; Console.W…
稀疏数组 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组. 稀疏数组的处理方法是: 记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素行列及值记录在一个小规模的数组中(稀疏数组),从而缩小程序的规模. row col val 原始数组行 原始数组列 一共多少个不同值 二维数组转稀疏数组的思路: 遍历原始的二维数组,得到有效数据的个数sum 根据sum就可以创建稀疏数组sparseArr int[sum+1][3] 将二维数组的有效数据存入到稀疏数组 稀…
一.概念&引入 什么是稀疏数组? 稀疏数组是面对一个二维数组中有众多重复元素的情况下,为了节省磁盘空间,将此二维数组转化为更加节省空间的一种数组,我们叫他稀疏数组. 只是听概念或许会看不明白,我们来用图来演示一下: 如图模拟为一个五子棋棋盘,其中1代表黑子,2代表白子(蓝子),我们在将其存入磁盘中,如果只是单纯的用文件io的方式将此二维数组存入磁盘,必然会造成磁盘空间的大大浪费,这时候就需要我们的稀疏数组出场了,咱们先看一下他是什么样子:   行(row) 列(col) 值(value) [0]…
目录 数组概述 数组声明创建 内存分析 java内存分析 堆 栈 方法区 三种初始化 静态初始化 动态初始化 数组的默认初始化 数组的四个基本特点 数组边界 小结: 数组使用 数组基础使用 For Each循环和普通for循环 多维数组 二维数组 Arrays类 稀疏数组 数组概述 数组是相同类型数组的有序集合 数组描述的是相同的类型的若干个数据,按照一定的先后次序排列组合而成 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们 数组声明创建 首先必须声明数组变量,才能在程…
060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序 本文知识点:冒泡排序 冒泡排序 实际案例分析冒泡排序流程 第1轮比较: 第1轮比较的结果:把最大的值56放到了末尾 第2轮比较: 第2轮比较的结果:把第2大的值53放到了倒数第2个位置 第2轮比较的次数比第1轮少,每一轮比较次数都越来越少 第3轮比较: 第4轮比较: 第5轮比较: 5轮比较排序后最终的结果: 以上过程就是一个完整的冒泡排序案例 冒泡排序程序代码及其运行结果 public st…
主要是用于数组压缩,去除无效的数组内容: 原数组内容: 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 转换成 稀疏数组 5 5 2 1 1 1 2 3 2 思路: 韩老师留的最后课后作业代码完成: 代码实现: package Array_Test; import java.io.*; public class Test4 { public static void main(String[] args) throws IOException,…
package sparseArray; public class SparseArray { public static void main(String[] args) { // TODO Auto-generated method stub //创建一个原始的二维数组 // 0表示没有棋子,1表示黑子,2表示蓝子 int chessArr1[][] =new int[11][11]; chessArr1[1][2]=1; chessArr1[2][3]=2; //输出原始二维数组 Syst…