稀疏数组(数据结构)
稀疏数组(数据结构)
- 需求:编写五子棋游戏中,有存盘和续上盘的功能
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 1 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 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 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
0 0 0 0 0 0 0 0 0 0 0
- 分析问题:因为该二维数组的很多值是默认的0,因此记录了很多没有意义的数据
- 解决:稀疏数组
什么是稀疏数组
- 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组了保存该数组。
- 稀疏数组的处理方式是:
1.记录数组一共有几行几列,有多少个不同值
2.把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模
如图,左边原始数组,右边稀疏数组
package com.boss.array;public class ArrayDemo09 {public static void main(String[] args) {//1.创建一个二维数组11*11 0:没有棋子,1:黑 2:白int[][] array=new int[11][11];array[1][2]=1;array[2][3]=2;//输出原始数组System.out.println("输出原始数组");for (int[] ints : array) {for (int anInt : ints) {System.out.print(anInt+"\t");}System.out.println();}System.out.println("===============");//转换为稀疏数组保存//获取有效值的个数int sum=0;for (int i = 0; i <11 ; i++) {for (int j = 0; j <11 ; j++) {if(array[i][j]!=0){sum++;}}}System.out.println("有效值的个数"+sum);//创建一个稀疏数组的数组int[][] array1=new int[sum+1][3];array1[0][0]=11;array1[0][1]=11;array1[0][2]=sum;//遍历二维数组,将非零的值,存分到稀疏数组中int count=0;for (int i = 0; i <array.length ; i++) {for (int j = 0; j <array[i].length ; j++) {if(array[i][j]!=0){count++;array1[count][0]=i;array1[count][1]=j;array1[count][2]=array[i][j];}}}//输出稀疏数组System.out.println("稀疏数组");for (int i = 0; i <array1.length ; i++) {System.out.println(array1[i][0]+"\t"+array1[i][1]+"\t"+array1[i][2]+"\t");}System.out.println("===================");System.out.println("还原");//1.读取稀疏数组的值int[][] array2=new int[array1[0][0]][array1[0][1]];//2.给其中的元素还原他的值for (int i = 1; i <array1.length ; i++) {array2[array1[i][0]][array1[i][1]]=array1[i][2];}System.out.println("输出还原的数组");for (int[] ints : array2) {for (int anInt : ints) {System.out.print(anInt+"\t");}System.out.println();}}
}
稀疏数组(数据结构)相关推荐
- 数据结构与算法---稀疏数组
数据结构与算法-稀疏数组 1.基本介绍: 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组. 2.稀疏数组的处理方法是: (1)记录数组一共有几行几列,有多少个 ...
- 数据结构(一)--稀疏数组
数据结构复习笔记(一)–稀疏数组 介绍 在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵. 如: 0 0 0 0 0 0 0 0 0 0 0 0 ...
- 数据结构与算法————稀疏数组
引言 数据压缩方面,我们往往可以通过稀疏数组来保存有效数据,节省存储空间. 一.稀疏数组的概念 当一个数组中大部分元素是0,或为同一个值的时候,可以使用稀疏数组来保存数组. 它是一个十分有效的存储结构 ...
- 【Java数据结构与算法】第一章 稀疏数组和队列
第一章 稀疏数组和队列 文章目录 第一章 稀疏数组和队列 一.线性结构和非线性结构 1.线性结构 2.非线性结构 二.稀疏数组 三.队列 1.队列 2.环形队列 一.线性结构和非线性结构 1.线性结构 ...
- 稀疏数组练习demo 数据结构和算法
稀疏数组课后练习demo 数据结构和算法 实现了二维数组转稀疏数组保存到文件,读文件再转为二维数组 import java.io.*; import java.util.Arrays;/*** htt ...
- 数据结构与算法一:稀疏数组 队列 链表
1 线性结构和非线性结构 数据结构包括:线性结构和非线性结构. 1.1 线性结构 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 线性结构有两种不同的存储结构,即顺序存储结构和 ...
- 尚硅谷01 数据结构与算法_数据结构与算法介绍+稀疏数组
数据结构与算法的关系 几个实际编程中遇到的问题 要想写出优秀的算法,首先应该能读懂别人写好的算法. 将生活中遇到的实际问题,使用程序来解决 线性结构和非线性结构 线性结构和非线性结构的关系: 数据结构 ...
- 菜鸟窝-数据结构与算法之稀疏数组
数据结构与算法 数据结构是组织(包括存储.处理等)数据的方式,是算法的基础 程序=数据结构+算法:数据结构分为线性和非线性 五子棋问题.约瑟夫问题等都离不开数据结构与算法 常用算法案例:修路问题.最短 ...
- 新星计划Day4【数据结构与算法】 稀疏数组与队列
新星计划Day4[数据结构与算法] 稀疏数组与队列
最新文章
- python ssh模块有哪些_Python paramiko模块(实现ssh)
- 倒梁法matlab,在编制措施项目清单时,关于钢筋混凝土模版及支架费项目,应在清单中列明( )...
- MySQL 遇到的问题
- 关于微机开操作票的研究22437
- linux 换行符_一个linux帮你做高效数据统计
- Akka并发编程——第五节:Actor模型(四) 停止Actor
- 安卓安装kali linux之Termux
- Go实现简单负载均衡
- 使用ceph-deploy搭建三节点ceph集群
- 无法使用带括号的初始值设定项初始化数组_leetcode32. 最长有效括号
- 数据库JDBCUtil 工具类 增加连接池操作
- CS231n——机器学习算法——线性分类(上: 线性分类器)
- 滑动速度监听VelocityTracker
- JavaScript发送短信案例
- logisim 快速加法器设计实验报告_八位加法器设计实验报告
- 计算机保研面试知识点,保研面试(附面试笔试机试)
- 什么是百度权重 百度指数词
- scrapy+python爬地图参照物应该有的坑及解决办法
- windows10系统超全优化方法
- Android中使用Room(ORM关系映射框架)对sqllite数据库进行增删改查