实现基础(二维数组)
-
在二维数组的基础上实现
-
二维数组的语法定义
//语法格式 //方法一: 数据类型[][] 变量名 = new 数据类型[3][4]; //方法二: k 数据类型[3][4] 变量名 = {{1,2},{2,3}}; //释义 //表示定义了一个3行4列总12个元素的数组
-
二维数组的输出
public static void main(String[] args) { //1.创建二维数组 int[][] i = new int[2][1]; //2.遍历次数 for (int i1 = 0; i1 < i.length; i1++) { //3.遍历一维数组 //长度小于该一维数组的长度 for (int j = 0; j < i[i1].length; j++) { //4.输出到控制台 //i[一维数组的位置][一维数组的元素的位置] System.out.print(i[i1][j]+"\t"); } //5.每遍历一次,执行换行 System.out.println(" "); } }
稀疏数组介绍
-
记录数组有几行几列,几个不同值。
-
把具有不同值的元素和行列及值记录在一
小规模的数组中,从而缩小程序规模。
统计行[ 0 ]:
总行数(6)--总列数(7)--有效值(8个)
具体位置[ 1 ]:
在第0行 -- 第3列 -- 值为22
以下以此类推...
实例练习
实例问题理解
-
分析:当一个数组中大部分元素为0,或者为同一值的数组时,记录了很多没有意义的值。
-
解决:稀疏数组。
代码
-
1.转换稀疏数组
//获得有效值
//validFigure有效值
int validFigure = 0;
for (int j = 0; j < i.length; j++) {
for (int j1 = 0; j1 < i.length; j1++) {
if (i[j][j1] != 0){
validFigure++;
}
}
}
-
2.创建稀疏数组
int[][] i2 = new int[validFigure+1][3];
//总行数
i2[0][0] = i.length;
System.out.println("i2[0][0] = " + i2[0][0]);
//总列数
i2[0][1] = i[1].length;
System.out.println("i2[0][1] = " + i2[0][1]);
//总有效值数
i2[0][2] = validFigure;
-
3.遍历二维数组,将非零的值,存放到稀疏数组中
int count = 0; for (int j = 0; j < i.length; j++) { for (int k = 0; k < i[j].length; k++) { if (i[j][k] != 0){ count++; i2[count][0] = j; i2[count][1] = k; i2[count][2] = i[j][k]; } } }
-
4.打印稀疏数组
for (int i1 = 0; i1 < i2.length; i1++) { for (int i3 = 0; i3 < i2[i1].length; i3++) { System.out.print(i2[i1][i3]+"\t"); } System.out.println(" "); }
-
运行结果