当前位置: 首页 > wzjs >正文

褚橙的网站建设联图二维码生成器

褚橙的网站建设,联图二维码生成器,企业微信开发公司,颍上县建设局网站稀疏数组(Sparse Array) 是一种用于压缩存储大量默认值(通常是 0)的数组的数据结构。它通过只存储非默认值的元素及其位置来节省空间。稀疏数组常用于存储矩阵或二维数组,尤其是当数组中大部分元素为默认值时。 稀疏数…

稀疏数组(Sparse Array) 是一种用于压缩存储大量默认值(通常是 0)的数组的数据结构。它通过只存储非默认值的元素及其位置来节省空间。稀疏数组常用于存储矩阵或二维数组,尤其是当数组中大部分元素为默认值时。

稀疏数组的核心思想

普通数组的问题:

如果一个二维数组中有大量重复的默认值(如 0),存储这些值会浪费空间。

稀疏数组的解决方案:

只存储非默认值的元素及其位置。

使用一个三元组 (行, 列, 值) 来表示每个非默认值。

稀疏数组的结构

稀疏数组通常由两部分组成:

第一行:

存储原始数组的行数、列数以及非默认值的个数。

例如:[行数, 列数, 非默认值个数]。

后续行:

每一行存储一个非默认值的三元组 (行, 列, 值)。
在这里插入图片描述

package com.jianstudy.array;
public class ArrayDemo11 {public static void main(String[] args) {//稀疏数组学习//原始数组int[][] array1 = {{0,0,0,2,0},{0,0,3,0,0},{1,0,0,5,0},{0,4,0,0,0}};//获取原始数组有效值的个数int result = 0;//定义一个result存放有效值的个数for(int i =0;i< array1.length;i++){for(int j =0;j<array1[0].length;j++){if(array1[i][j]!=0){//判断如果对应某行某列的元素不等于0(即有效值)就让result自增result ++;}}}System.out.println("原始数组有效值有"+result+"个"); //原始数组有效值有5个     //创建一个数组存放稀疏数组int[][] array2 = new int[result+1][3]; //稀疏数组的长度是[5+1][3] 6行3列/*稀疏数组的一层是行数,有效值的个数+1(多一行表示头部信息 用来存放 行,列,有效值)稀疏数组的二层是列数固定3   (1列存放的行,2列存放的列,3列存放的有效值)*///用二维数组的长度来表示稀疏数组的头部 行 信息array2[0][0]= array1.length;//初始化  把原始数组行的长度 赋给 稀疏数组的第一行第一列//因为原始数组是规则的二维数组,所以每一组二维数组的内层一维数组长度是一样的所以可以随便取一组来获取内层一维数组的长度//用内层的一维数组的长度来表示稀疏数组的头部 列 信息array2[0][1]= array1[0].length;//初始化  把原始数组列的长度 赋给 稀疏数组的第一行第二列//用result表示稀疏数组的头部有效值信息array2[0][2]=result;//初始化  把获得有效值的个数 赋给 稀疏数组的第一行第三列/*       得到头部信息(第一行)行 列 有效值        *///填充稀疏数组//第一次循环会把头部信息遍历出来,后续得到的都是有效值元素的行列坐标以及有效元素本身的值int count =0;//计数 稀疏数组的有效值行数for(int i=0  ;i< array1.length ;i++){for(int j=0 ;j<array1[0].length;j++){if(array1[i][j]!=0){//如果原始数组的某个值不为0(即有效值)执行以下代码                count++;array2[count][0] = i;//稀疏数组有效值的行坐标array2[count][1] = j;//稀疏数组有效值的列坐标array2[count][2] = array1[i][j];//稀疏数组的有效值  }}}//输出稀疏数组System.out.println("输出稀疏数组");for(int i = 0;i<array2.length;i++){//因为稀疏数组的列数是固定的所以只需要循环行数iSystem.out.println( array2[i][0]+" "+ array2[i][1]+" "+ array2[i][2]+" ");/*此时的稀疏数组  array2 =[5+1][3] 6行3列0	 1    20头部信息 行4 列5 有效值51 		  0   3   22 		  1   2   33 		  2   0   14 		  2   3   55 		  3   1   4array2 = {{4 5 5},{0 3 2},{1 2 3},{2 0 1},{2 3 5},								 {3 1 4}} 		*/    }//还原稀疏数组//1.读取稀疏数组        //稀疏数组的头部行列信息就是还原数组的外内层元素。且隐性的初始化还原数组array3的各个元素					int[][] array3 = new int[array2[0][0]][array2[0][1]];//array2[0][0]=4 array2[0][1]=5/*  			头部信息    行4 列5int[][] array3 = new int[4][5];array3[0][0]=0;.........array3[3][4]=0;	4*5=20个元素全部被隐性的初始化*///2.给其中的元素还原他的值。for (int i = 1; i < array2.length; i++) {//要从第二行开始,第一行是头部信息i=1就是第二行开始 如果i=0就会读到头部信息/*0 1行  头部信息 行4 列5 有效值5        1 2行            0   3   2			 			1 2行 0 3 22 3行  		   1   2   3						2 3行 1 2 33 4行  		   2   0   1	 		-------->   3 4行 2 0 14 5行  		   2   3   5						4 5行 2 3 55 6行  		   3   1   4                        5 6行 3 1 4*///这里可以看成初始化array3的元素。还原数组接收稀疏数组有效值,匹配的是稀疏数组有效值的行列                array3[array2[i][0]][array2[i][1]]=array2[i][2];//稀疏数组的有效值,赋给还原数组的对应项/*从{{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,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,2,0},{0,0,3,0,0},{0,0,0,0,0},{0,0,0,0,0}}{{0,0,0,2,0},{0,0,3,0,0},{1,0,0,0,0},{0,0,0,0,0}}								{{0,0,0,2,0},{0,0,3,0,0},{1,0,0,5,0},{0,0,0,0,0}}{{0,0,0,2,0},{0,0,3,0,0},{1,0,0,5,0},{0,4,0,0,0}}*/            }System.out.println("=============");//3.使用for each循环打印还原后的稀疏数组for(int[] a:array3){for(int b:a){System.out.print(b+" ");}System.out.println();}}
}

在这里插入图片描述


文章转载自:

http://j1kO7t2i.tLfmr.cn
http://dnpsgfIv.tLfmr.cn
http://Eg7MIetR.tLfmr.cn
http://is3sbhRD.tLfmr.cn
http://lHYP2aT9.tLfmr.cn
http://jlfQh1ph.tLfmr.cn
http://DZKvMrsI.tLfmr.cn
http://6e16STDt.tLfmr.cn
http://oFzEMHW1.tLfmr.cn
http://UHX6bxlu.tLfmr.cn
http://VOYbjeJz.tLfmr.cn
http://0KozlmI0.tLfmr.cn
http://MZSxOiQz.tLfmr.cn
http://sefhGVzt.tLfmr.cn
http://z6tCH4kR.tLfmr.cn
http://vvDSfmB1.tLfmr.cn
http://gsnx6Pyx.tLfmr.cn
http://bJtATtlM.tLfmr.cn
http://vRgEDS1g.tLfmr.cn
http://mRObCCQw.tLfmr.cn
http://hggLP1WJ.tLfmr.cn
http://en75pOEt.tLfmr.cn
http://pXtbNNiu.tLfmr.cn
http://NsjJSoUS.tLfmr.cn
http://dWY7kv7R.tLfmr.cn
http://SKYrOjZA.tLfmr.cn
http://WoVmydMb.tLfmr.cn
http://CVMsWBQ4.tLfmr.cn
http://VyOb3H9z.tLfmr.cn
http://NxXr1IzU.tLfmr.cn
http://www.dtcms.com/wzjs/767617.html

相关文章:

  • 做pc端网站方案个人网站设计要求
  • 做行业网站太原学网站开发的学校
  • 福建省住房城乡建设厅网站无货源电商
  • 数据开发网站模板网页制作大作业
  • 地方门户网站建设要求镇江东翔网络科技有限公司
  • 北京南站最新消息中企动力网站模板
  • 贵州软件开发 网站开发好123设为主页
  • 网站登录模板下载吴江网站设计
  • 有没有免费的企业网站建设英文网站建设方案模板高校
  • 网站 建设需求wordpress 页码
  • 长沙企业网站设计百度关键词点击价格查询
  • 最牛的SEO教程网站物业公司排名2020最新排名
  • 免费flash网站源码水煮鱼wordpress模板
  • 电影网站内页中国企业商务网站建设
  • 温州 网站优化搜狗 优化网站
  • 网站建设伍金手指下拉3免费 片
  • 企业网站备案 淘宝客怎么查询网站建设期
  • 海南学校网站建设网站建设与推广合肥
  • 英文网站案例好的用户体验网站 学校
  • 深圳松岗 网站建设最良心的网页传奇
  • 网页建站软件重庆网站建设技术外包
  • 湖南省城乡和住房建设厅网站wordpress支付宝微信支付
  • 网站开发是什么环境百度字体如何转换wordpress
  • 传奇网站模板免费下载福建省建设资格注册管理中心网站
  • PHP网站建设的课后笔记flash网站动画
  • 泉州开发网站的公司有哪些局域网小网站网站建设软件
  • 有模版之后怎么做网站怎样免费建公司网站
  • 泗阳网站定制如何做淘宝商城网站设计
  • 官方网站开发与定制公司logo标志设计免费
  • 网站建设柒金手指花总11建设摩托车官方旗舰店