数据结构学习笔记(java版)——第一章 稀疏数组
2022/2/4 1:13:19
本文主要是介绍数据结构学习笔记(java版)——第一章 稀疏数组,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
第一章 稀疏数组
1.1.1 稀疏数组介绍
- 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。
- 稀疏数组的处理方式是:记录数组一共有几行几列,有多少个不同值;把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模
1.1.2 实例介绍
左侧的是原始的二维数组,右侧的是稀疏数组。稀疏数组的第一行是记录原始二维数组的行和列以及二维数组的有效值的总和。从第一列开始将记录原始二维数组的位置以及值(行、列、值的形式记录)。(以上都是从零开始记录,例如第一行的行值是0)。
1.1.3 稀疏数组的形式
- 稀释数组永远只有三列,稀疏数组的行取决于原始二维数组的有效值的总数。
1.1.4 稀疏数组与二维数组之间的转换
- 二维数组–>稀疏数组
- 遍历原始二维数组,得到有效值的总数 sum
- 根据sum的值,就可以创建稀疏数组 sparseArr int[sum+1][3]
- 将二维数组的有效数据存入到稀疏数组中
- 稀疏数组–>二维数组
- 先读取稀疏数组的第一行,根据第一行的数据,创建原始二维数组,比如上面的 chessArr int[6][7]
- 在读取稀疏数组后几行的数据,并赋予原始的二维数组
1.1.5代码实现
package com.wkj; /** * @author xxiao * @date 2022/2/3 - 22:23 */ public class SparseArray { public static void main(String[] args) { //创建一个原始二维数组11*11 //0:表示没有棋子,1:表示黑子,2:表示篮子 int chessArr1[][] = new int[11][11]; chessArr1[1][2] = 1; chessArr1[2][3] = 2; chessArr1[5][7] = 2; chessArr1[3][8] = 2; // 输出原始的二维数组 System.out.println("原始二维数组----------------"); for (int[] row:chessArr1){ for (int data:row){ System.out.print(data); System.out.print("\t"); } System.out.println(); } // 将二维数组转化为稀疏数组 // 1.先遍历二维数组有多少个有效值的总数 int sum = 0; for (int i = 0;i<11;i++){ for (int j = 0; j<11;j++){ if(chessArr1[i][j]!=0){ sum++; } } } System.out.println(sum); // 创建对应的稀疏数组 int sparseArray[][] = new int[sum+1][3]; // 给稀疏数组第一行赋值 sparseArray[0][0] = 11; sparseArray[0][1] = 11; sparseArray[0][2] = sum; // 遍历二维数组将非零的值存放到稀疏数组中 int count = 0; for (int i = 0;i<11;i++){ for (int j = 0; j<11;j++){ if(chessArr1[i][j]!=0){ count++; sparseArray[count][0] = i; sparseArray[count][1] = j; sparseArray[count][2] = chessArr1[i][j]; } } } System.out.println("得到的稀疏数组----------------"); // 得到的稀疏数组 for (int[] row:sparseArray){ for (int data:row){ System.out.print(data); System.out.print("\t"); } System.out.println(); } System.out.println("----------------"); // 将稀疏数组转化为二维数组 /* 1. 先读取稀疏数组的第一行,根据第一行的数据,创建原始二维数组,比如上面的 chessArr int[6][7] 2. 在读取稀疏数组后几行的数据,并赋予原始的二维数组*/ int chessArr2[][] = new int[sparseArray[0][0]][sparseArray[0][1]]; for (int i = 1;i<sparseArray.length;i++){ chessArr2[sparseArray[i][0]][sparseArray[i][1]]=sparseArray[i][2]; } System.out.println("恢复后的二维数组----------------"); for (int[] row:chessArr2){ for (int data:row){ System.out.print(data); System.out.print("\t"); } System.out.println(); } } }
输出效果
这篇关于数据结构学习笔记(java版)——第一章 稀疏数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?