Java数组:稀疏数组
2021/7/23 9:07:40
本文主要是介绍Java数组:稀疏数组,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
稀疏数组
-
稀疏数组是一种数据结构
-
一个数组中的大部分元素为 0 ,或者为同一值的数组时,可以使用稀疏数组来保存该数组。
-
稀疏数组的处理方式:
- 记录数组一共有几行几列,有多少个不同的值
- 把具有不同值的元素的 值 和 行列值记录在一个小规模的数组中
-
如下图:左边是原始数组,右边是稀疏数组。
-
一个例子
- 需求:编写五子棋游戏中,有存盘退出和续上的功能。
-
分析问题:因为该二维数组的很多默认值为 0 ,因此记录了很多没有意义的数据。
-
解决:稀疏数组
package com.wanggenji.array; public class ArrayDemo08 { public static void main(String[] args) { //1. 创建一个二维数组11*11 0:没有棋子 1:黑棋 2:白棋 int[][] array1 = new int[11][11]; array1[1][2]=1; array1[2][3]=2; //打印原始数组 for (int[] ints : array1) { for (int anInt : ints) { System.out.print(anInt+"\t"); } System.out.println(); } System.out.println("=============这是分割线==========="); //打印压缩之后的数组 for (int[] ints : compress(array1)) { for (int anInt : ints) { System.out.print(anInt+"\t"); } System.out.println(); } System.out.println("=============这是分割线==========="); //打印解压还原之后的数组 int[][] a =compress(array1); for (int[] ints : decompressed(a)) { for (int anInt : ints) { System.out.print(anInt+"\t"); } System.out.println(); } } //压缩方法的实现 public static int[][] compress(int[][] array) { int count0 = 0;//零的个数 int count1 = 0;//非零元素个数 //计算值为零的元素的个数和非零元素的个数 for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { if (array[i][j]==0){ count0++; }else { count1++; } } } //创建稀疏数组 int[][] comperssedArray = new int[count1+1][3]; //稀疏数组第一行赋值 comperssedArray[0][0] = array.length; comperssedArray[0][1] = array[0].length; comperssedArray[0][2] = count0; //特殊元素保存 count1 = 1; //稀疏数组的第二行开始是特殊元素的信息 for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { if (array[i][j]!=0){ comperssedArray[count1][0] = i; comperssedArray[count1][1] = j; comperssedArray[count1][2] = array[i][j]; count1++; //换行存下一个特殊元素信息 } } } return comperssedArray; } //解压方法的实现 稀疏数组转化为 普通二维数组 public static int[][] decompressed(int[][] array) { int[][] decompressedArray = new int[array[0][0]][array[0][1]]; //稀疏数组第一行储存的数据:行 列 重复数据个数,由此创建成原来的数组 //原数组特殊数据还原 for (int i = 1; i < array.length; i++) { decompressedArray[array[i][0]][array[i][1]] = array[i][2]; } return decompressedArray; } }
这篇关于Java数组:稀疏数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16ShardingSphere 如何完美驾驭分布式事务与 XA 协议?
- 2024-11-16ShardingSphere如何轻松驾驭Seata柔性分布式事务?
- 2024-11-16Maven资料入门指南
- 2024-11-16Maven资料入门教程
- 2024-11-16MyBatis Plus资料:新手入门教程与实践指南
- 2024-11-16MyBatis-Plus资料入门教程:快速上手指南
- 2024-11-16Mybatis资料入门教程:新手必看指南
- 2024-11-16MyBatis资料详解:新手入门与初级实战指南
- 2024-11-16MyBatisPlus资料:初学者入门指南与实用教程
- 2024-11-16MybatisPlus资料详解:初学者入门指南