稀疏数组:也就是说当一个数组当中的大部分元素为0的话,或者说是同一值的数组时候,就可以使用稀疏数组来保存该数组。
@数组是从第0个开始的,和习惯用法是不一样的。
![](https://img.haomeiwen.com/i18879640/ec01c5623a3ea883.png)
记录方式为:
~首先记录数组一共是几行几列,有多少个不同的值
~其次就是把具有不同值的元素的位置(行与列)记录下来。目的即为缩小程序的规模。
package Array;
public class ArrayDemon8 {
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;
//输出原始的数组
System.out.println("输出原始的数组");
for (int[] ints:array1){
for (int anInt:ints){
//ints,anInt是声明的两个变量,相当于i,j
System.out.print(anInt+"\t");
}
System.out.println();
}
System.out.println("================");
//转换为稀疏数组保存
//获取有效值的个数
int sum = 0;
for (int i = 0;i<11;i++){
for (int j = 0;j<11;j++){
if (array1[i][j]!=0){
sum++;
}
}
}
System.out.println("有效值的个数为"+sum);
//2.创建一个稀疏数组的数组
int[][] array2 = new int[sum+1][3];
array2[0][0]=11;
array2[0][1]=11;
array2[0][2]=sum;
//遍历二维数组,将非零的值,存放在稀疏数组当中
int count=0;
for (int i = 0;i<array1.length;i++){
for (int j = 0;j<array1[i].length;j++){
if (array1[i][j]!=0){
count++;
array2[count][0] = i;
array2[count][1] = j;
array2[count][2] = array1[i][j];
}
}
}
//输出稀疏数组
System.out.println("稀疏数组");
for (int i = 0;i<array2.length;i++){
System.out.println(array2[1][0]+"\t"
+array2[i][0]+"\t"
+array2[i][0]+"\t");
}
}
}
网友评论