//稀疏数组,将原始的稀疏数组转换为稀疏数组
package com.HuanXin.array_6;
public class Demo09 {
public static void main(String[] args) {
System.out.println("=================输出原始稀疏数组===================");
int[][]array=new int[11][11];
array[1][1]=1;//原始稀疏数组,除0外的稀疏数组元素的元素坐标 第1行第1列
array[0][1]=2;//原始稀疏数组,除0外的稀疏数组元素的元素坐标 第0行第2列
for (int i = 0; i <array.length ; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j]+" ");
}
System.out.println();
}
System.out.println("=========计算出稀疏数组里面的有效值==================");
//定义一个储存的量
int num=0;
for (int i = 0; i < array.length ; i++) {
for (int j = 0; j <array.length ; j++) {
if (array[i][j]!=0){
num=num+1;//当遍历出来的数组元素不等于0时则num从0增加到1,循环自增
}
}
}
System.out.println("有效值为="+num);//除0之外的稀疏数组元素
//======定义一个新的稀疏数组==========
int [][]array1=new int[num+1][3];//稀疏数组的空间大小,是一个num+1行*3列的空间,3列是因为 1.行 2.列 3.有效值个数
//先定义第一行的内容
array1 [0][0]=11;//array数组共有11行
array1 [0][1]=11;//array数组共有11列
array1 [0][2]=num;//array数组共有2个有效值
//==将原始的稀疏数数组元素转换为新的稀疏数组=======
int XX=0;//定义一个变量,若遍历出来不等于0的数组元素,那么就令它自增1
for (int i = 0; i <array.length ; i++) {//遍历[11][11]的所有数组元素
for (int j = 0; j <array[i].length ; j++) {//遍历[11][11]的所有数组元素
if (array[i][j]!=0){//如果遍历出来其中有的数组元素不等于0
XX=XX+1;//那么就让变量ZonHang+1,循环下去,此时已经从0变成了1
array1[XX][0]=i;//第1行的第0列用于存放不等于0的"行"坐标;[1][0]用于存放i 第几行
array1[XX][1]=j;//第1行的第1列用于存放不等于0的"纵"坐标;[1][0]用于存放j
array1[XX][2]=array[i][j];//第1行的第2列用于存放不等于0的值;[1][0]用于存放array[i][j]
}
}
}
System.out.println("=========遍历出已经定义好的稀疏数组==================");
for (int i = 0; i <array1.length ; i++) {//array1.length=3=num=array1的行数
System.out.println(array1[i][0]+"\t"+//[0][0] [1][0] [2][0]
array1[i][1]+"\t"+
array1[i][2]+"\t");//这里的i与ZonHang相等都是记录在第几行
}
}
}
/*
总结:
稀疏数组就是将数组内的大部分相同的数组元素全都忽略掉
只输出不同于大部分数组元素的数组元素
*/
![](/i/l/?n=22&i=blog/2984651/202210/2984651-20221025224944760-1221290743.png)
![](/i/l/?n=22&i=blog/2984651/202210/2984651-20221025225007727-829302468.png)
标签:Demo47,array1,稀疏,int,num,数组,array From: https://www.cnblogs.com/CHX249/p/16826705.html