您好,登錄后才能下訂單哦!
代碼如下:
package com.atguigu.sparsearray;
/**
* @author ChenDan
* @date 2019/7/20 10:52
*/
public class SparseArray {
public static void main(String[] args) {
//創(chuàng)建一個(gè)原始的二維數(shù)組 11*11
//0表示沒有棋子,1表示黑子,2表示藍(lán)子
int[][] chessArr1 = new int[11][11];
chessArr1[1][2] = 1;
chessArr1[2][3] = 2;
chessArr1[4][5] = 2;
System.out.println("原始的二維數(shù)組~~");
for (int[] row : chessArr1) {
for (int data : row) {
System.out.printf("%d\t", data);
}
System.out.println();
}
//將二維數(shù)組轉(zhuǎn)換為稀疏數(shù)組
//先遍歷二維數(shù)組得到非0數(shù)據(jù)的個(gè)數(shù)
int sum = 0;
for (int i = 0; i < chessArr1.length; i++) {
for (int j = 0; j < chessArr1[i].length; j++) {
if (chessArr1[i][j] != 0)
sum++;
}
}
//創(chuàng)建對(duì)應(yīng)的稀疏數(shù)組
int sparseArr[][] = new int[sum + 1][3];
//給稀疏數(shù)組賦值
sparseArr[0][0] = 11;
sparseArr[0][1] = 11;
sparseArr[0][2] = sum;
int count = 0; //count用于記錄是第幾個(gè)非0數(shù)據(jù)
for (int i = 0; i < chessArr1.length; i++) {
for (int j = 0; j < chessArr1[i].length; j++) {
if (chessArr1[i][j] != 0) {
count++;
sparseArr[count][0] = i;
sparseArr[count][1] = j;
sparseArr[count][2] = chessArr1[i][j];
}
}
}
//輸出稀疏數(shù)組形式
System.out.println();
System.out.println("得到的稀疏數(shù)組為~~~~");
for (int i = 0; i < sparseArr.length; i++) {
for (int j = 0; j < sparseArr[i].length; j++) {
System.out.printf("%d\t", sparseArr[i][j]);
}
System.out.println();
}
//將稀疏數(shù)組恢復(fù)為原始的二維數(shù)組
//1.讀取稀疏數(shù)組的第一行得到二維數(shù)組的索引
int chessArr2[][] = new int[sparseArr[0][0]][sparseArr[0][1]];
//2.讀取后幾行(從稀疏數(shù)組的第二行開始)稀疏數(shù)組,并賦值給恢復(fù)的二維數(shù)組
for (int i = 1; i < sparseArr.length; i++) {
chessArr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
}
//恢復(fù)后的二維數(shù)組
System.out.println();
System.out.println("恢復(fù)后的二維數(shù)組~~");
for (int i = 0; i < chessArr2.length; i++) {
for (int j = 0; j < chessArr2[i].length; j++) {
System.out.printf("%d\t", chessArr2[i][j]);
}
System.out.println();
}
}
}
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。