java数组---稀疏数组与数组之间的相互转化
public static void main(String[] args) {
    int[][]array1=new int[11][11];
    array1[1][2]=1;
    array1[2][3]=2;
    System.out.println("原始数组");
    for (int[] ints:array1) {
        for (int anInt :ints){
            System.out.print(anInt+"\t");
        }
        System.out.println();
    }
    //转化为稀疏数组
    //获取有效值个数
    int sum=0;
    for (int i = 0; i < 11; i++) {
        for (int j = 0; j < 11; j++) {
            if (array1[i][j]!=0){
                sum++;
            }
        }
    }System.out.println("有效值个数"+sum);
    System.out.println("============================");
    //创建一个稀疏数组
    int[][] array2=new int[sum+1][3];
    array2[0][0]=11;
    array2[0][1]=11;
    array2[0][2]=11;
    //遍历二维数组,将非零值,存入数组中;
    int count=0;
    for (int i = 0; i < array1.length; i++) {
        for (int j = 0; j < array1[i].length; j++) {
            if (array1[i][j]!=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++) {
        System.out.println(array2[i][0]+"\t"+array2[i][1]+"\t"+array2[i][2]+"\t");
    }
    System.out.println("===================================");
    //还原稀疏数组
    System.out.println("还原");
    int[][]array3=new int[array2[0][0]][array2[0][1]];
    for (int i = 1; i < array2.length; i++) {
    array3[array2[i][0]][array2[i][1]]=array2[i][2];
    }
    //打印
    System.out.println("还原稀疏数组");
    for (int[] ints : array1) {
        for (int anInt:ints) {
            System.out.print(anInt+"\t");
            
        }
        System.out.println();
    }
}												
											java数组---稀疏数组与数组之间的相互转化的更多相关文章
- java算法--稀疏数组
		数据结构必要知识 线性结构 线性结构是最常用的数据结构,数据元素之间存在一对一的线性关系. 线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构.顺序存储的线性表称为顺序表,顺序表中的存储元素是 ... 
- java中数组、集合、字符串之间的转换,以及用加强for循环遍历
		java中数组.集合.字符串之间的转换,以及用加强for循环遍历: @Test public void testDemo5() { ArrayList<String> list = new ... 
- java字符数组char[]和字符串String之间的转换
		java字符数组char[]和字符串String之间的转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 使用String.valueOf()将字符数组转换成字符串 void (){ cha ... 
- Java的稀疏数组的简单代码实现
		目录 Java的稀疏数组的简单代码实现 一.稀疏数组的基本概念 二.稀疏数组的Java代码实现思路 三.稀释数组的Java代码实现 四.结语 Java的稀疏数组的简单代码实现 一.稀疏数组的基本概念 ... 
- JAVA描述算法和数据结构(01):稀疏数组和二维数组转换
		本文源码:GitHub·点这里 || GitEE·点这里 一.基本简介 1.基础概念 在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵:与之相反, ... 
- java提高篇(十八)-----数组之一:认识JAVA数组
		噢,它明白了,河水既没有牛伯伯说的那么浅,也没有小松鼠说的那么深,只有自己亲自试过才知道!道听途说永远只能看到表明现象,只有亲自试过了,才知道它的深浅!!!!! 一.什么是数组 ... 
- Java学习第四篇:数组,排序,查找
		一.数组 1.一维数组 (1).数组的定义 数据类型 数组名[]=new 数据类型[大小] public class Demo1 { public static void main(String[] ... 
- [改善Java代码]避开基本类型数组转换列表陷阱
		开发中经常用到Arrays和Collections这两个工具类. 在数组和列表之间进行切换.非常方便.但是也会遇到一些问题. 看代码: import java.util.Arrays; import ... 
- Java语言基础(方法与数组)_DAY05
		1:函数(掌握) (1)定义在类中,有特定功能的一段小程序,可以独立运行. (2)函数的格式: 修饰符 返回值类型 函数名(形参类型 形式参数1,形参类型 形式参数2...) ... 
- java _循环练习和数组练习
		练习 1.输出所有的水仙花数,所谓水仙花数是指一个数3位数,其每位数字立方和等于其本身,如153 = 1*1*1 + 3*3*3 + 5*5*5(很经典的题目) 分析: 通过观察发现,本题目要实现打印 ... 
随机推荐
- Improved Security for a Ring-Based Fully Homomorphic Encryption Scheme-2013:解读
			本文记录阅读此论文的笔记 摘要 (1)1996年,HPS三人提出一个格上的高效加密方案,叫做NTRUEncrypt,但是没有安全性证明:之后2011年,SS等人修改此方案,将其安全规约到标准格上的困难 ... 
- 2.2 追求并发的极致-线程概论 -《zobolの操作系统学习札记》
			2.2 追求并发的极致-线程概论 为了追求程序运行之间的并发性,计算机科学家们发明了进程.为了进一步的追求进程内部的并发性,工程师们又提出了线程. 正是线程的出现,给予了程序员更多地操纵OS的自由,可 ... 
- pytorch初学
			(pytorch_gpu) D:\pytorch-text>pythonPython 3.7.9 (default, Aug 31 2020, 17:10:11) [MSC v.1916 64 ... 
- kali渗透测试阅读目录
			一.渗透测试介绍 渗透测试介绍及渗透环境配置 二.信息收集 kali 信息收集 三.漏洞扫描 kali 漏洞扫描 四.漏洞利用 kali msf漏洞利用 
- 把excel的数据导入到SQLSERVER里面,excel的字符串时间在导入sql库显示datetime 数据类型的转换产生一个超出范围的值
			这是我Excel导入的数据,准备把这个varchar(50)时间导入我的userInfo表中的出生日期字段datatime,如果你的数据正常,是可以导入的, 但是有些日期可能超出datatime的最大 ... 
- 攻防世界pwn题:Recho
			0x00:查看文件信息 一个64位二进制文件,canary和PIE保护机制没开. 0x01:用IDA进行静态分析 分析:主程序部分是一个while循环,判断条件是read返回值大于0则循环.函数ato ... 
- 强化学习-学习笔记5 | AlphaGo
			本文不是论文阅读笔记,只是一个学习笔记,重在理解,在严谨程度上可能稍差. AlphaGo 论文指路: Mastering the game of Go with deep neural network ... 
- HTML知识点概括——一篇文章带你完全掌握HTML
			HTML知识点概括 前端三件套分别是HTML3,CSS5,JavaScript 稍微介绍一下W3C标准: 结构化标准语言(HTML) 表现标准语言(CSS) 行为标准(DOM,JavaScript) ... 
- 使用Thread类和Runnable接口实现多线程的区别
			使用Thread类和Runnable接口实现多线程的区别 先看两种实现方式的步骤: public class ThreadDemo{ public static void main(String[] ... 
- HashSet 添加/遍历元素源码分析
			HashSet 类图 HashSet 简单说明 HashSet 实现了 Set 接口 HashSet 底层实际上是由 HashMap 实现的 public HashSet() { map = new ... 
