package project1;
public class text1 {
public static void main(String [] args) {
/*写一个稀疏数组SpareArray
* 1.创建一个【】【】数据
* 2.对这个数组进行遍历
* 3.求出这个数组的有效值的个数
* */
System.out.println("创建数组:");
int[][] Array = new int[11][11];
for(int i = 0;i < Array.length;i++) {
for(int j = 0;j < Array[i].length;j++) {
System.out.print(Array[i][j] + "\t");
}
System.out.println();
}
//想数组内输入有效值
Array[3][4] = 1;
Array[4][5] = 2;
Array[5][6] = 3;
Array[6][7] = 4;
Array[7][8] = 5;
Array[8][9] = 6;
System.out.println("输入有效值后的数组:");
for(int i = 0;i < Array.length;i++) {
for(int j = 0;j < Array[i].length;j++) {
System.out.print(Array[i][j] + "\t");
}
System.out.println();
}
//对数组的有效值进行统计
int sum = 0;
for(int i = 0;i < Array.length;i++) {
for(int j = 0;j < Array[i].length;j++) {
if(Array[i][j] != 0) {
sum++;
}
}
}
System.out.println("数组的有效值个数=" + sum);
//得到有效值的个数之后,就应该去创建稀疏数组SpareArray
/*稀疏数组的特点
* 1.只有3列
* 2.第一行储存原数组的行列数和有效值个数
* 3.剩下所有行存有效值的坐标和值
* */
//创建并且遍历稀疏数组
int[][] SpareArray = new int[sum+1][3];
for(int i = 0;i < SpareArray.length;i++) {
for(int j = 0;j <SpareArray[i].length;j++) {
System.out.print(SpareArray[i][j] + "\t");
}
System.out.println();
}
//将原数组的规模放入稀疏数组中
SpareArray[0][0] = 11;
SpareArray[0][1] = 11;
SpareArray[0][2] = sum;
//遍历原数组赋值给稀疏数组
int count = 1;
for(int i = 0;i <Array.length;i++) {
for(int j = 0;j <Array[i].length;j++) {
if(Array[i][j] != 0) {
SpareArray[count][0] = i;
SpareArray[count][1] = j;
SpareArray[count][2] = Array[i][j];
count++;
}
}
}
//输出稀疏数组
System.out.println("输出稀疏数组:");
for(int i = 0;i < SpareArray.length;i++) {
for(int j = 0;j <SpareArray[i].length;j++) {
System.out.print(SpareArray[i][j] + "\t");
}
System.out.println();
}
//稀疏数组转换成原数组
//读取稀疏数组第一行的数据信息
System.out.println("稀疏数组转换成原数组:");
int[][] Array2 = new int[SpareArray[0][0]][SpareArray[0][1]];
//采用一维数组遍历二维数组,稀疏数组只有3列这个特点
for(int i = 1;i < SpareArray.length;i++) {
Array2[SpareArray[i][0]][SpareArray[i][1]] = SpareArray[i][2];
}
//遍历
for(int i = 0;i < Array2.length;i++) {
for(int j = 0;j < Array2[i].length;j++) {
System.out.print(Array2[i][j] + "\t");
}
System.out.println();
}
}
}