02稀疏数组(java版本)


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] = 1;
12 arrchess1[8][5] = 2;
13 // 输出原始的二维数组
14 System.out.println("====原始数组==== ");
15 for(int i = 0; i < 11; i++) {
16 for(int j= 0; j < 11; j++) {
17 System.out.printf("%d ",arrchess1[i][j]);
18 }
19 System.out.println();
20 }
21 // 将二维数组 转 稀疏数组
22 System.out.println("====稀疏数组==== ");
23 // 1)统计个数 count
24 int sum = 0;
25 for(int i = 0; i < 11; i++) {
26 for(int j = 0; j< 11; j++) {
27 if(arrchess1[i][j] != 0) {
28 sum++;
29 }
30 }
31 }
32 System.out.println("稀疏数组个数是:"+ sum);
33 // 2)创建对应的稀疏数组 、赋值
34 int sparearray[][] = new int[sum+1][3];
35 sparearray[0][0] = 11; //行
36 sparearray[0][1] = 11; //列
37 sparearray[0][2] = sum; //个数
38 //遍历原来的二维数组,将非0的值存放到 sparseArr中
39 int count = 0;
40 for(int i = 0; i < 11; i++) {
41 for(int j = 0; j < 11; j++) {
42 if(arrchess1[i][j] != 0) { //按行给稀疏数组赋值
43 count++; //第0行已经存放数据了 从第一行开始
44 sparearray[count][0] = i;
45 sparearray[count][1] = j;
46 sparearray[count][2] = arrchess1[i][j]; //注意点:--原来的-- 不要搞混
47 }
48 }
49 }
50 // 3)打印稀疏数组
51 for(int i = 0; i < sum + 1; i++) {
52 for(int j = 0; j < 3; j++) {
53 System.out.printf("%d\t",sparearray[i][j]);
54 }
55 System.out.println();
56 }
57 System.out.println();
58 //将稀疏数组 --》 恢复成 原始的二维数组
59 //1)1. 先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组
60 int arrchess2[][] = new int[sparearray[0][0]][sparearray[0][1]];
61 //2)2. 在读取稀疏数组后几行的数据(从第二行开始),并赋给 原始的二维数组 即可
62 for(int i = 1; i < sparearray.length;i++) { // 注意:遍历sparearray 别弄错成 arrchess2
63 arrchess2[sparearray[i][0]] [sparearray[i][1]] = sparearray[i][2];
64 }
65
66 System.out.println("====恢复的稀疏数组==== ");
67 for(int i = 0; i < 11; i++) {
68 for(int j= 0; j < 11; j++) {
69 System.out.printf("%d ",arrchess2[i][j]);
70 }
71 System.out.println();
72 }
73
74 System.out.println("hello..");
75 }
76 }

02稀疏数组(java版本)的更多相关文章
- java算法--稀疏数组
数据结构必要知识 线性结构 线性结构是最常用的数据结构,数据元素之间存在一对一的线性关系. 线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构.顺序存储的线性表称为顺序表,顺序表中的存储元素是 ...
- 数据结构与算法之java语言实现(一):稀疏数组
一.概念&引入 什么是稀疏数组? 稀疏数组是面对一个二维数组中有众多重复元素的情况下,为了节省磁盘空间,将此二维数组转化为更加节省空间的一种数组,我们叫他稀疏数组. 只是听概念或许会看不明白, ...
- 图解Java数据结构之稀疏数组
在编程中,算法的重要性不言而喻,没有算法的程序是没有灵魂的.可见算法的重要性. 然而,在学习算法之前我们需要掌握数据结构,数据结构是算法的基础. 我在大学的时候,学校里的数据结构是用C语言教的,因为对 ...
- 【学习总结】java数据结构和算法-第三章-稀疏数组和队列
相关链接 [学习总结]尚硅谷2019java数据结构和算法 github:javaDSA 目录 稀疏数组 队列 稀疏数组 稀疏数组介绍 图示 应用实例 代码实现 SparseArray.java:与二 ...
- Java数组声明创建和使用以及多维数组、Arrays类、稀疏数组
目录 数组概述 数组声明创建 内存分析 java内存分析 堆 栈 方法区 三种初始化 静态初始化 动态初始化 数组的默认初始化 数组的四个基本特点 数组边界 小结: 数组使用 数组基础使用 For E ...
- Java的稀疏数组的简单代码实现
目录 Java的稀疏数组的简单代码实现 一.稀疏数组的基本概念 二.稀疏数组的Java代码实现思路 三.稀释数组的Java代码实现 四.结语 Java的稀疏数组的简单代码实现 一.稀疏数组的基本概念 ...
- 数据结构(1):稀疏数组使用java实现
主要是用于数组压缩,去除无效的数组内容: 原数组内容: 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 ...
- java基础——多维数组和稀疏数组
多维数组 多维数组可以堪称数组的数组,比如二维数组就是一个特殊的一维数组,其中每一个元素都是一个以为数组 而且数组 int a[][]= new int[2][3]; public class Arr ...
- Java数组07——稀疏数组
稀疏数组 总结: 记录有效的坐标: 记录原始做表的大小和有效值的个数 记录每一个有效值的坐标 ,变成一个新的数组 age: package array; public class ArrayDe ...
随机推荐
- Java思考——如何使用Comparable按照我们指定的规则排序?
练习: 存储学生对象并遍历,创建TreeSet集合使用无参构造方法,并按照年龄从小到大的顺序排序,若年龄相同再按照姓名的字母顺序排序 分析: 1.创建学生类,成员变量name,age;无参构造,带参构 ...
- websocket使用nginx代理后连接频繁打开和关闭
前几天开发了一个功能,使用websocket向前台发送消息,与前端联调时一切正常,但是发布到环境出现如下报错: 发现404,无法找到连接,突然想到环境上是走nginx代理的,应该是nginx没有配置代 ...
- java-集合-realdo-集合一对多
school类: package setdone; import java.util.List; public class School { private String schoolname; pr ...
- Java 中用到的线程调度算法是什么?
抢占式.一个线程用完 CPU 之后,操作系统会根据线程优先级.线程饥饿情况等 数据算出一个总的优先级并分配下一个时间片给某个线程执行.
- 学习zabbix(六)
实验环境 实验用2到2台机器,实验所用机器系统环境如下,可以看到2台机器的主机名和IP地址 ? 1 2 3 4 5 6 7 8 9 10 [root@linux-node1 ~]# cat /etc/ ...
- GlusterFS(GFS) 分布式存储
GlusterFS(GFS) 分布式存储 GFS 分布式文件系统 目录 一: GlusterFS 概述 1.1 GlusterFS 简介 1.2 GlusterFS特点 1.2.1 扩展性和高性能 ...
- Linux编程 | 使用 make
目录 简单的 makefile 文件 常规的 makefile 文件 常用参数 make 内置规则 后缀和模式规则 make 管理函数库 在Linux 环境中,make 是一个非常重要的编译命令.不管 ...
- carsim2016事件如何设置
#carsim2016事件设置# 完成以下功能:车速低于60km/h时,加速,设置节气门开度为0.8,制动主斜体样式缸压力设为0:车速高于120km/h时,制动,设置节气门开度为0,制动主缸压力设置为 ...
- 安装Backstage.io应用
Backstage介绍 What's Backstage? Backstage is an open platform for building developer portals. Powered ...
- HTML5 版的flappy bird
Flappy Bird这款简单的小游戏累计下载量已经超过5000万次,每天收入至少5万美元.然而,2月10日其开发者Dong Nguyen却将Flappy Bird从苹果App Store和Googl ...