java中實現稀疏陣列的轉換
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();
}
}
}