最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java稀疏數(shù)組詳細(xì)圖文教程

 更新時(shí)間:2023年09月28日 08:23:19   作者:楠枬  
當(dāng)一個(gè)數(shù)組中的大部分元素為相同的值,可使用稀疏數(shù)組來(lái)保存該數(shù)組,可以將稀疏數(shù)組看做是普通數(shù)組的壓縮,這篇文章主要給大家介紹了關(guān)于Java稀疏數(shù)組的相關(guān)資料,需要的朋友可以參考下

1.稀疏數(shù)組

稀疏數(shù)組(Sparse Array):當(dāng)一個(gè)數(shù)組中的大部分元素為相同的值,可使用稀疏數(shù)組來(lái)保存該數(shù)組,可以將稀疏數(shù)組看做是普通數(shù)組的壓縮

例如

數(shù)組arr中許多值為0,若對(duì)二維數(shù)組直接進(jìn)行存儲(chǔ),則會(huì)存儲(chǔ)許多相同的數(shù)值0,造成空間的浪費(fèi),此時(shí),我們可以用稀疏數(shù)組對(duì)其進(jìn)行存儲(chǔ)

2.稀疏數(shù)組的使用

要對(duì)二維數(shù)組進(jìn)行存儲(chǔ),我們需要知道二維數(shù)組的行和列、不同數(shù)值的數(shù)量以及不同元素的位置和值

稀疏數(shù)組的第一行,存放二維數(shù)組arr的行數(shù)、列數(shù)、不同數(shù)值的數(shù)量sum

 后面幾行,存放不同值元素在二維數(shù)組arr中的行、列、數(shù)值

代碼實(shí)現(xiàn)

創(chuàng)建二維數(shù)組

 int[][] arr = new int[6][5];
 arr[1][0] = 1;
 arr[1][3] = 6;
 arr[4][3] = 2;

2.1 二維數(shù)組轉(zhuǎn)換為稀疏數(shù)組

(1)遍歷二維數(shù)組,確定不同元素的個(gè)數(shù)sum

        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[0].length; j++) {
                if(arr[i][j] != 0){
                    sum++;
                }
            }
        }

(2)根據(jù)sum創(chuàng)建稀疏數(shù)組

int[][] sparseArr = new int[sum+1][3];

(3) 遍歷二維數(shù)組,對(duì)稀疏數(shù)組進(jìn)行賦值

        //稀疏數(shù)組的第一行分別存放二維數(shù)組的行數(shù)、列數(shù)以及不同元素的個(gè)數(shù)
        sparseArr[0][0] = arr.length;
        sparseArr[0][1] = arr[0].length;
        sparseArr[0][2] = sum;
        //再對(duì)不同元素進(jìn)行存儲(chǔ)
        int k = 0;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[0].length; j++) {
                if(arr[i][j] != 0){
                    k++;
                    //分別存放不同元素的行、列以及數(shù)值
                    sparseArr[k][0] = i;
                    sparseArr[k][1] = j;
                    sparseArr[k][2] = arr[i][j];
                }
            }
        }

2.2 稀疏數(shù)組轉(zhuǎn)換為二維數(shù)組

(1)創(chuàng)建二維數(shù)組

int[][] arr1 = new int[sparseArr[0][0]][sparseArr[0][1]];

(2)遍歷稀疏數(shù)組, 對(duì)不同值元素進(jìn)行賦值

        //遍歷稀疏數(shù)組,對(duì)不同值元素進(jìn)行賦值
        for (int i = 1; i < sparseArr.length; i++) {
           arr1[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
        }

完整代碼

public class Test {
    public static void main(String[] args) {
        //創(chuàng)建二維數(shù)組
        int[][] arr = new int[6][5];
        arr[1][0] = 1;
        arr[1][3] = 6;
        arr[4][3] = 2;
        System.out.println("****二維數(shù)組****");
        for (int[] row: arr) {
            for (int data: row) {
                System.out.printf("%d ",data);
            }
            System.out.println();
        }
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[0].length; j++) {
                if(arr[i][j] != 0){
                    sum++;
                }
            }
        }
        //創(chuàng)建稀疏數(shù)組
        int[][] sparseArr = new int[sum+1][3];
        //稀疏數(shù)組的第一行分別存放二維數(shù)組的行數(shù)、列數(shù)以及不同元素的個(gè)數(shù)
        sparseArr[0][0] = arr.length;
        sparseArr[0][1] = arr[0].length;
        sparseArr[0][2] = sum;
        //再對(duì)不同元素進(jìn)行存儲(chǔ)
        int k = 0;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[0].length; j++) {
                if(arr[i][j] != 0){
                    k++;
                    //分別存放不同元素的行、列以及數(shù)值
                    sparseArr[k][0] = i;
                    sparseArr[k][1] = j;
                    sparseArr[k][2] = arr[i][j];
                }
            }
        }
        System.out.println("****稀疏數(shù)組****");
        for (int[] row: sparseArr) {
            for (int data: row) {
                System.out.printf("%d ",data);
            }
            System.out.println();
        }
        //創(chuàng)建二維數(shù)組
        int[][] arr1 = new int[sparseArr[0][0]][sparseArr[0][1]];
        //遍歷稀疏數(shù)組,對(duì)不同值元素進(jìn)行賦值
        for (int i = 1; i < sparseArr.length; i++) {
           arr1[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
        }
        System.out.println("****二維數(shù)組****");
        for (int[] row: arr1) {
            for (int data: row) {
                System.out.printf("%d ",data);
            }
            System.out.println();
        }
    }
}

運(yùn)行結(jié)果

總結(jié) 

到此這篇關(guān)于Java稀疏數(shù)組的文章就介紹到這了,更多相關(guān)Java稀疏數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

海宁市| 崇阳县| 莱芜市| 伊金霍洛旗| 雷州市| 凤山市| 卢湾区| 乡宁县| 兴和县| 宜昌市| 龙口市| 瓮安县| 新兴县| 泗水县| 梅州市| 宁安市| 伊宁市| 民权县| 尚志市| 万源市| 遂昌县| 石河子市| 平安县| 桐梓县| 稷山县| 达孜县| 晋江市| 麻阳| 松滋市| 庆城县| 根河市| 眉山市| 黄陵县| 邮箱| 沂南县| 长寿区| 平乡县| 枞阳县| 分宜县| 平潭县| 宣恩县|