关于java的稀疏数组
我们在前面的文章中了解了冒泡排序和优化冒泡排序,在本篇文章中我们来介绍一下稀疏数组,我们学会了可以自己动手试一试😀
稀疏数组
在介绍稀疏数组之前,我们先来了解一下五子棋。
我们这里有一个11 x 11的棋盘,棋盘上有两个棋子,一黑一白,所以我们可以用我们之前学过的二维数组来表示。
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
黑色棋子代表1,白色棋子代表2,但是我们会发现,二维数组很多的默认值都是0,所以记录了很多没有意义的数据。
所以,可以通过压缩数组的方法,来解决次问题,这个就叫做稀疏数组。
稀疏数组的介绍
1、当一个数组中大部分的元素都是0,或者都为同一个数值,可以用稀疏数组来保存该数组。
2、稀疏数组的处理方法:
- 记录数组一共有几行,有几列,有多少个不同的值。
- 把具有相同值的元素和行列以及值,记录在一个小规模的数组中,从而缩小了程序的规模。
3、举例说明:
- 原始数组
0 0 0 22 0 0 15
0 11 0 0 0 17 0
- 稀疏数组
行 | 列 | 值
[0] 2 | 7 | 4
--------|-----|------- //意思就是,两行,七列,4个不相同的值。
[1] 0 | 3 | 22
[2] 0 | 6 | 15
[3] 1 | 1 | 11
[4] 1 | 5 | 17
4、我们用代码来写一下棋盘😎
- **创建一个二维数组 **
- 棋盘格式为11*11 没有棋子代表0 ,黑色为1,白色为2。
public class Demo
{
public static void main(String[] args)
{
int[][] array1 = new int[11][11