java稀疏陣列是什麼

duanhao發表於2021-09-11

java稀疏陣列是什麼

特點

1、它可以壓縮資料,減少記憶體空間的使用。

過程

2、記錄陣列元素的座標和值。

3、稀疏陣列有3列,分別是行、列、值,行數是原陣列不同值的數加1;

array[0]記錄一組行數和列數,以及不同值的數;

然後每行記錄一個值在原陣列的行列下標記和自己的值。

例項

public static void main(String[] args) {
    //建立一個原始的二維陣列
    //0:沒有棋子,1:黑子,2:白子
    int chessArr1[][] = new int[11][11];
    //下面先固定二維陣列的元素,後面可最佳化~
    chessArr1[1][2] = 1;
    chessArr1[2][3] = 2;
    chessArr1[4][5] = 2;
    //輸出原始的二維陣列:
    System.out.println("原始的二維陣列:");
    printArray(chessArr1);
 
    //下面將二維陣列轉化為稀疏陣列
    //1.先遍歷二維陣列,得到非0資料的個數
    int sum = 0;
 
    for (int i = 0; i < 11; i++) {
        for (int j = 0; j < 11; j++) {
            if (chessArr1[i][j] != 0) {
                sum++;
            }
        }
    }
 
    //2.建立對應的稀疏陣列
    int sparesArr[][] = new int[sum + 1][3];
    //給稀疏陣列賦值
    sparesArr[0][0] = 11;
    sparesArr[0][1] = 11;
    sparesArr[0][2] = sum;
 
    //遍歷二維陣列,將非0的值存放在sparesArr中
    int count = 0;//count 用於記錄是第幾個非0資料
    for (int i = 0; i < 11; i++) {
        for (int j = 0; j < 11; j++) {
            if (chessArr1[i][j] != 0) {
                count++;
                sparesArr[count][0] = i;
                sparesArr[count][1] = j;
                sparesArr[count][2] = chessArr1[i][j];
            }
        }
    }
 
    //輸出稀疏陣列的形式
    System.out.println();
    System.out.println("得到的稀疏陣列為:");
    printArray(sparesArr);
    System.out.println();
 
    //下面將稀疏陣列恢復成二維陣列
    //先讀取稀疏陣列的第一行元素,根據其資料,建立原始的二維陣列
    int chessArr2[][] = new int[sparesArr[0][0]][sparesArr[0][1]];
 
 
    //讀取稀疏陣列後幾行的元素(從第二行開始),並賦值給原始的二維陣列即可
 
    for (int i = 1; i < sparesArr.length; i++) {
        chessArr2[sparesArr[i][0]][sparesArr[i][1]] = sparesArr[i][2];
    }
 
    //輸出恢復後的二維陣列
    System.out.println();
    System.out.println("恢復後的二維陣列");
    printArray(chessArr2);
}
 
//列印陣列
public static void printArray(int[][] array) {
    for (int i = 0; i < array.length; i++) {
        for (int j = 0; j < array[0].length; j++) {
            System.out.printf("%dt", array[i][j]);
        }
        System.out.println();
    }
}

以上就是java稀疏陣列的介紹,希望對大家有所幫助。更多Java學習指路:

本教程操作環境:windows7系統、java10版,DELL G3電腦。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1343/viewspace-2829851/,如需轉載,請註明出處,否則將追究法律責任。

相關文章