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 ...
随机推荐
- github新手使用指南
常用命令: Git 速查表(摘自 AI有道) 一.常见命令 git init : 初始化 git 仓库,即将一个文件夹初始化为一个 git 仓库.具体的操作是创建一个 .git 隐藏文件夹 git ...
- Kafka02--Kafka生产者简要原理
前言 在Kafka01--Kafka生产者使用方式中对KafkaProducer的基本使用方式进行了了解.以上只是使用方面,一个好的开元框架必定是易于开发者使用的,但是对生产者的基本逻辑流程和数据流转 ...
- WebApplicationContext?
WebApplicationContext 继承了ApplicationContext 并增加了一些WEB应用必备的特有功能,它不同于一般的ApplicationContext ,因为它能处理主题, ...
- 如何在网上找java包
如图所示 在java api后面输入你要找包的名称就可以了
- springboot使用redis实现发布与订阅
配置redis连接地址 # Redis服务器地址 spring.redis.host=youxiu326.xin # Redis服务器连接端口 spring.redis.port=6379 # Red ...
- 10分钟go crawler colly从入门到精通
Introduction 本文对colly如何使用,整个代码架构设计,以及一些使用实例的收集. Colly是Go语言开发的Crawler Framework,并不是一个完整的产品,Colly提供了类似 ...
- 移动端调试工具weinre安装教程(java版)
先申明:本安装教程是基于java的jdk安装的,经过测试可以正常使用,基于nodejs的安装,小喵鼓弄了好几天也没有成功,如果哪位童鞋基于nodejs安装成功了,请联系小喵,小喵在这里先谢谢你了! 好 ...
- C#编写一个控制台应用程序,输入正方形边长或者半径,计算其周长和面积并输出
编写一个控制台应用程序,输入正方形边长或者半径,计算其周长和面积并输出 (1) 编写两个接口,接口 IShape 包含三个方法:initialize, getPerimeter, getArea.分别 ...
- 访问控制protected是不同包中对子类可见,什么意思?
2.2 以下例子说明:protected是不同包中对子类可见,对非子类不可见. 例1.2.2.a:---本例为正常用法. package p1;public class A { protecte ...
- potoshop cs6安装配置16错误解决办法(win10系统)
问题截图如下: 解决方法: 右击图标选择属性:选择兼容性-->兼容模式-->以管理员身份运行-->应用 然后就可以打开了!