溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java如何實(shí)現(xiàn)二維數(shù)組與稀疏數(shù)組互轉(zhuǎn)

發(fā)布時(shí)間:2022-04-11 14:26:34 來(lái)源:億速云 閱讀:124 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹了Java如何實(shí)現(xiàn)二維數(shù)組與稀疏數(shù)組互轉(zhuǎn)的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Java如何實(shí)現(xiàn)二維數(shù)組與稀疏數(shù)組互轉(zhuǎn)文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

    二維數(shù)組

    二維數(shù)組本質(zhì)上是以數(shù)組作為數(shù)組元素的數(shù)組,即“數(shù)組的數(shù)組”,類型說(shuō)明符 數(shù)組名[常量表達(dá)式][常量表達(dá)式]。二維數(shù)組又稱為矩陣,行列數(shù)相等的矩陣稱為方陣。對(duì)稱矩陣a[i][j] = a[j][i],對(duì)角矩陣:n階方陣主對(duì)角線外都是零元素。

    稀疏數(shù)組

    1、稀疏算法的基本介紹

    當(dāng)一個(gè)數(shù)組中大部分元素為0,或者為同一個(gè)值的數(shù)組時(shí),可以使用稀疏數(shù)組來(lái)保存該數(shù)組。從而減少計(jì)算機(jī)不必要的內(nèi)存開(kāi)銷(xiāo)。

    2、稀疏算法的處理方式

    (1)數(shù)組中第一行記錄原始數(shù)組中一共有幾行幾列,有多少個(gè)不同的值。
    (2)把具有不同值的元素的行列及值記錄在一個(gè)小規(guī)模的數(shù)組中,從而縮小程序的規(guī)模。

    二維數(shù)組轉(zhuǎn)稀疏數(shù)組的思路

    • 遍歷原始的二維數(shù)組,得到有效數(shù)據(jù)的個(gè)數(shù)sum,根據(jù)sum就可以創(chuàng)建稀疏數(shù)組sparseArr int[sum+1][3]

    • 將二維數(shù)組的有效數(shù)據(jù)存入到稀疏數(shù)組

    稀疏數(shù)組轉(zhuǎn)原始的二維數(shù)組的思路:

    • 先讀取稀疏數(shù)組的第一行,根據(jù)第一行的數(shù)據(jù),創(chuàng)建原始的二維數(shù)組,比如上面的chessArr2=int[11][11]

    • 再讀取稀疏數(shù)組后幾行的數(shù)據(jù),并賦給原始的二維數(shù)組即可

    寫(xiě)一個(gè)二維數(shù)組:

    //1.創(chuàng)建一個(gè)二維數(shù)組
    int chessArr1[][]=new int[11][11];
    //2.給二維數(shù)組賦值
    chessArr1[1][2]=1;
    chessArr1[2][3]=2;
    //3.雙重for循環(huán)輸出二維數(shù)組
    System.out.println("原始的二維數(shù)組:");
    for (int[] row : chessArr1) {
        for (int data : row) {
            System.out.printf("%d\t",data);
        }
        //每輸出完一個(gè)一重?cái)?shù)組換一行
        System.out.println();
    }

    將二維數(shù)組換換位稀疏數(shù)組

    //將二維數(shù)組轉(zhuǎn)稀疏數(shù)組
    //1.先遍歷二維數(shù)組,得到非0數(shù)據(jù)的個(gè)數(shù),知道數(shù)據(jù)個(gè)數(shù),就可以創(chuàng)建稀疏數(shù)組(知道了稀疏數(shù)組的行)
    int sum=0;
    for (int i = 0; i < 11; i++) {
        for (int j = 0; j < 11; j++) {
            if (chessArr1[i][j]!=0){
                sum++;
            }
        }
    }
    System.out.println("有效值的個(gè)數(shù)為:"+sum);
    //2.創(chuàng)立對(duì)應(yīng)的稀疏數(shù)組
    int sparseArr[][]=new int[sum+1][3];
    //3.給稀疏數(shù)組賦值
    sparseArr[0][0]=11;
    sparseArr[0][1]=11;
    sparseArr[0][2]=sum;
    //4.遍歷二維數(shù)組,給稀疏數(shù)組
    int count=0;//用于記錄是第幾行
    for (int i = 0; i < 11; i++) {
        for (int j = 0; j < 11; j++) {
            if (chessArr1[i][j]!=0){
                sparseArr[count+1][0]=i;
                sparseArr[count+1][1]=j;
                sparseArr[count+1][2]=chessArr1[i][j];
                count++;
            }
        }
    }
    //5.輸出稀疏數(shù)組
    //以下是兩種遍歷方式:
    /*for (int[] ints : sparseArr) {
        for (int anInt : ints) {
            System.out.printf("%d\t",anInt);
        }
        //把一個(gè)數(shù)組遍歷完之后換一行
        System.out.println();
    }*/
    System.out.println("得到稀疏數(shù)組為~~~~~");
    for (int i = 0; i < sparseArr.length; i++) {
        System.out.printf("%d\t%d\t%d\t\n",sparseArr[i][0],sparseArr[i][1],sparseArr[i][2]);
    }

    將稀疏數(shù)組還原為二維數(shù)組

    //把稀疏數(shù)組還原為二維數(shù)組
    //1.創(chuàng)建二維數(shù)組
    int chessArr2[][]=new int[sparseArr[0][0]][sparseArr[0][1]];
    //2.給二維數(shù)組賦值
    for (int i = 1; i < sparseArr.length; i++) {
        chessArr2[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2];
    }
    //3.輸出二維數(shù)組
    for (int[] row : chessArr2) {
        for (int data : row) {
            System.out.printf("%d\t",data);
        }
        System.out.println();
    }

    樹(shù)越是向往高處的光亮,它的根就越要向下,向泥土向黑暗的深處。

    關(guān)于“Java如何實(shí)現(xiàn)二維數(shù)組與稀疏數(shù)組互轉(zhuǎn)”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“Java如何實(shí)現(xiàn)二維數(shù)組與稀疏數(shù)組互轉(zhuǎn)”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問(wèn)一下細(xì)節(jié)

    免責(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)容。

    AI