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 }

最新文章

  1. 极路由2(极贰)ROOT并刷了OpenWrt
  2. 前端React开发入门笔记
  3. Spring集成JUnit测试
  4. DOM访问元素样式和操作元素样式
  5. 关闭ctrl+shift+d截图
  6. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(四) 之 用户搜索(Elasticsearch),加好友流程(1)。
  7. 银行IT入门深似海
  8. 每天一个linux命令(26):du 命令
  9. Thinkphp 3.2 添加 验证码 如何添加。
  10. Linux rabbitmq的安装和安装amqp的php插件
  11. ios8中的UIScreen
  12. Day17 表单验证、滚动菜单、WEB框架
  13. ajax请求或者页面需要缓存,代码如下
  14. QuietHit小Game
  15. Web从入门到放弃&lt;7&gt;
  16. servlet(二)
  17. Initialization failed for Block pool &lt;registering&gt; (Datanode Uuid unassigned) service to IP1:8020 Invalid volume failure config value: 1
  18. 【AI】图像识别-物体检测-百度AI-EasyDL-NodeJS
  19. FileInputStream 和 FileOutputStream
  20. linux sendmail 邮件服务器架设

热门文章

  1. CF1479X Codeforces Round #700
  2. 面试之Java String 编码相关
  3. JSBridge通信原理, 有哪几种实现的方式?
  4. 为什么需要消息系统,mysql 不能满足需求吗?
  5. Eclipse建立Web项目,手动生成web.xml文件
  6. 解释 Spring 框架中 bean 的生命周期?
  7. 10本 Linux PDF 书籍免费分享
  8. ubuntu+ROS安装turtulebot3
  9. python中类变量和实例变量的区别
  10. 前端入门-day2(常见css问题及解答)