稀疏数组的应用

稀疏数组的应用稀疏数组一 稀疏数值二 使用步骤 1 引入库 2 读入数据总结一 稀疏数值当一个数组中大部分元素为 0 时 或者为同一个值的数组时 可以使用稀疏数组来保存该数组 二 使用步骤 1 引入库代码如下 示例 importnumpya pyplotasplti filterwarnin ignore import


一、稀疏数值

当一个数组中大部分元素为0时,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。

二、使用步骤

1.处理方法

存储值

2.二维数组转化为稀疏数组的思路

import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; public class sparseArray { 
     public static void main(String[] args) { 
     // TODO 自动生成的方法存根 //创建一个原始的二维数组11*11 //0:表示没有棋子,1表示黑子,2表示蓝子 int chessArr1[][]=new int[11][11]; chessArr1[1][2]=1; chessArr1[2][3]=2; //输出原始的二维数组 for(int[] row:chessArr1) { 
     for(int data:row) { 
     System.out.printf("%d\t",data); } System.out.println(); } //增强for没有下标 //将二维数组转换稀疏数组 //1、先遍历2二维数组得到非0数据的个数 int sum=0; for(int i=0;i<11;i++) { 
     for(int j=0;j<11;j++) { 
     if(chessArr1[i][j]!=0) sum++; } } //创建对应的稀疏数组 int sparseArr[][]=new int[sum+1][3]; //给稀疏数组赋值 sparseArr[0][0]=11; sparseArr[0][1]=11; sparseArr[0][2]=2; //遍历二维数组,将非0的值存放到sparseArr中 //可以在这设置一个count进行记数 for(int i=0;i<11;i++) { 
     for(int j=0;j<11;j++) { 
     if(chessArr1[i][j]!=0) { 
     sparseArr[i][0]=i; sparseArr[i][1]=j; sparseArr[i][2]=chessArr1[i][j]; } } } //输出稀疏数组的形式 System.out.println(); System.out.println("得到的稀疏数组为"); for(int i=0;i< sparseArr.length;i++) { 
     System.out.printf("%d\t%d\t%d\t\n",sparseArr[i][0],sparseArr[i][1],sparseArr[i][2]); } }} 

运行结果:
二维数组转化为稀疏数组

3.稀疏数组转化为原始的二维数组的思路

import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; public class sparseArray { 
     public static void main(String[] args) { 
     // TODO 自动生成的方法存根 //创建一个原始的二维数组11*11 //0:表示没有棋子,1表示黑子,2表示蓝子 int chessArr1[][]=new int[11][11]; chessArr1[1][2]=1; chessArr1[2][3]=2; //输出原始的二维数组 for(int[] row:chessArr1) { 
     for(int data:row) { 
     System.out.printf("%d\t",data); } System.out.println(); } //增强for没有下标 //将二维数组转换稀疏数组 //1、先遍历2二维数组得到非0数据的个数 int sum=0; for(int i=0;i<11;i++) { 
     for(int j=0;j<11;j++) { 
     if(chessArr1[i][j]!=0) sum++; } } //创建对应的稀疏数组 int sparseArr[][]=new int[sum+1][3]; //给稀疏数组赋值 sparseArr[0][0]=11; sparseArr[0][1]=11; sparseArr[0][2]=2; //遍历二维数组,将非0的值存放到sparseArr中 //可以在这设置一个count进行记数 for(int i=0;i<11;i++) { 
     for(int j=0;j<11;j++) { 
     if(chessArr1[i][j]!=0) { 
     sparseArr[i][0]=i; sparseArr[i][1]=j; sparseArr[i][2]=chessArr1[i][j]; } } } //输出稀疏数组的形式 System.out.println(); System.out.println("得到的稀疏数组为"); for(int i=0;i< sparseArr.length;i++) { 
     System.out.printf("%d\t%d\t%d\t\n",sparseArr[i][0],sparseArr[i][1],sparseArr[i][2]); } //读取稀疏数组的第一行的数据创建原始的二维数组 System.out.println(); System.out.println("输出转换的二维数组"); int chessArr2[][]=new int[sparseArr[0][0]][sparseArr[0][0]]; for(int i=1;i<sparseArr.length;i++) { 
     chessArr2[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2]; } for(int[] row:chessArr1) { 
     for(int data:row) { 
     System.out.printf("%d\t",data); } System.out.println(); } } } 

运行结果:
稀疏数组的应用


总结

(1)稀疏数组的主要应用场景在五子棋程序中
(2)稀疏数组在数组中存在大量相同元素的情况下,比传统二维数组要更节省空间
(3)稀疏数组可以对数据进行压缩

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231831.html原文链接:https://javaforall.net

(0)
上一篇 2025年11月18日 下午4:01
下一篇 2025年11月18日 下午4:22


相关推荐

  • 软件架构 设计模式_几种常见软件架构

    软件架构 设计模式_几种常见软件架构什么是架构?  软件体系结构通常被称为架构,指可以预制和可重构的软件框架结构。架构尚处在发展期,对于其定义,学术界尚未形成一个统一的意见,而不同角度的视点也会造成软件体系结构的不同理解,以下是一些主流的标准观点。  ANSI/IEEE610.12-1990软件工程标准词汇对于体系结构定义是:“体系架构是以构件、构件之间的关系、构件与环境之间的关系为内容的某一系统的基本组织结构以及知道上述内容设计与演化的原理(principle)”。  MaryShaw和DavidGarlan认为软件体系结构是软件设

    2022年10月18日
    1
  • mysql decimal类型排序「建议收藏」

    mysql decimal类型排序「建议收藏」mysqldecimal类型排序decimal类型是按照字典序排序!decimal类型是按照字典序排序!

    2022年7月17日
    20
  • 安装Esxi系统&重装Esxi系统

    安装Esxi系统&重装Esxi系统安装esxi系统、或者已经安装了esxi需要重装环境:DellR730服务器。前期准备:将VMwareESXi5.5.0的安装镜像要提前准备好,通过光碟、U盘、idrac管理界面挂载方式安装都行。1、加载VMwareESXi5.5.0版的ISO文件,ESXi引导装入程序,并且开始安装。按enter键,进入安装界面。如图所示:2、在安装ESXi引导加载的过程,这个要等一下,在窗口上可…

    2022年6月25日
    66
  • 菜鸟教程-maven[通俗易懂]

    菜鸟教程-maven[通俗易懂]Maven基于项目对象模型(缩写:POM)概念 Maven是一个项目管理工具,可以对Java项目进行构建、依赖管理。 Maven是一个基于Java的工具,所以要做的第一件事情就是安装JDK。 Maven提倡使用一个共同的标准目录结构,Maven使用约定优于配置的原则,大家尽可能的遵守这样的目录结构。如下所示: 目录 目的 ${basedir} 存放pom.xml和所有的子目录 ${basedir}/src/main/java 项目的ja

    2025年10月6日
    5
  • OpenCV进行图像相似度对比的几种办法

    OpenCV进行图像相似度对比的几种办法转载请注明出处 http blog csdn net wangyaninglm article details 来自 shiter 编写程序的艺术对计算图像相似度的方法 本文做了如下总结 主要有三种办法 1 PSNR 峰值信噪比 PSNR PeakSignalto 一种全参考的图像质量评价指标 简介 https en wikipedia

    2026年3月20日
    2
  • 微商怎么引流被加精准粉?微商有效引流被加方法「建议收藏」

    微商有效引流被加方法微商怎么精准加人增粉,微商引流方法很多,你学不完的,但是道却只有一个。流量的本质是传达信息,传达信息必要的条件是平台,传播者、接收者,这就是一个引流的过程。微商流量的本质,都知道流量就是人,但人不一定都是流量,凡是无法转化为用户的都不叫流量,说要引流推广,其实说白了是要找用户,微商是互联网商业的一种模式,互联网的本质是什么?所以不管你要去哪个平台推广,哪个地方引流,你都要想明白一个问题,我想要传达的信息是什么?简单讲一些引流方法吧,大概可以分为三类。一、诱导类只需给别人他们想要

    2022年4月18日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号