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

Java數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)二維數(shù)組與稀疏數(shù)組轉(zhuǎn)換詳解

 更新時(shí)間:2021年10月13日 14:19:57   作者:葉綠體不忘呼吸  
稀疏數(shù)組是用于優(yōu)化,壓縮具有以下特點(diǎn)的二維數(shù)組:當(dāng)二維數(shù)組中的元素大部分相同,有意義的數(shù)據(jù)元素較少時(shí),可以使用稀疏數(shù)組進(jìn)行簡(jiǎn)化,節(jié)省存儲(chǔ)空間

基本介紹

當(dāng)一個(gè)數(shù)組中大部分元素為0,或者為同一個(gè)值的數(shù)組時(shí),可以使用稀疏數(shù)組來(lái)保存該數(shù)組。

稀疏數(shù)組的處理方法是:
①記錄數(shù)組一共有幾行幾列,有多少個(gè)不同的值(0除外)。
②把具有不同值的元素的行列及值記錄在一個(gè)小規(guī)模的數(shù)組中,從而縮小程序的規(guī)模。

在這里插入圖片描述

二維數(shù)組轉(zhuǎn)稀疏數(shù)組:
①遍歷原始的二維數(shù)組,得到有效數(shù)據(jù)的個(gè)數(shù) sum(除0外不同值)
②根據(jù) sum 創(chuàng)建稀疏數(shù)組 sparseArr int[sum+1][3]
③將二維數(shù)組的有效數(shù)據(jù)數(shù)據(jù)存入到稀疏數(shù)組
(稀疏數(shù)組的第一行,三列分別記錄二維數(shù)組的行、列、有效數(shù)據(jù)個(gè)數(shù))
(后面的行記錄有效數(shù)據(jù)元素,三列分別記錄行、列、有效數(shù)據(jù)元素值)

稀疏數(shù)組轉(zhuǎn)二維數(shù)組:
①先讀取稀疏數(shù)組的第一行,根據(jù)第一行的數(shù)據(jù),創(chuàng)建原始的二維數(shù)組
②再讀取稀疏數(shù)組后幾行的數(shù)據(jù),并賦給原始的二維數(shù)組即可

應(yīng)用實(shí)例

使用稀疏數(shù)組,來(lái)保留二維數(shù)組(棋盤、地圖等等),把稀疏數(shù)組存盤,并且可以重新恢復(fù)為原來(lái)的二維數(shù)組數(shù)。

如下為一個(gè)棋盤通過(guò)二維數(shù)組轉(zhuǎn)換為稀疏數(shù)組加以存盤和復(fù)盤:

在這里插入圖片描述

1、創(chuàng)建原始二維數(shù)組并輸出

		//創(chuàng)建一個(gè)原始的二維數(shù)組11*11,0表示無(wú)子,1表示黑子,2表示藍(lán)子
        int[][] chessArr1 = new int[11][11];
        chessArr1[1][2] = 1;
        chessArr1[2][3] = 2;
        //輸出原始二維數(shù)組
        for (int[] row : chessArr1){
            for (int data : row){
                System.out.print(data + "\t");
            }
            System.out.println();
        }

在這里插入圖片描述

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

		//將二維數(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];
        sparseArr[0][0] = 11;
        sparseArr[0][1] = 11;
        sparseArr[0][2] = sum;
        int count = 0; //用于記錄賦值到第幾行
        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ù)組
        for (int[] row : sparseArr){
            for (int data : row){
                System.out.print(data + "\t");
            }
            System.out.println();
        }

在這里插入圖片描述

3、將稀疏數(shù)組轉(zhuǎn)回二維數(shù)組

        //將稀疏數(shù)組轉(zhuǎn)換為二維數(shù)組
        int[][] chessArr2 = new int[sparseArr[0][0]][sparseArr[0][1]];
        //讀取賦值
        for (int i = 1; i < sparseArr.length; i++) {
            chessArr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
        }
        //輸出
        for (int[] row : chessArr2){
            for (int data : row){
                System.out.print(data + "\t");
            }
            System.out.println();
        }

在這里插入圖片描述

到此這篇關(guān)于Java數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)二維數(shù)組與稀疏數(shù)組轉(zhuǎn)換詳解的文章就介紹到這了,更多相關(guān)Java 稀疏數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java FTPClient實(shí)現(xiàn)文件上傳下載

    Java FTPClient實(shí)現(xiàn)文件上傳下載

    這篇文章主要為大家詳細(xì)介紹了Java FTPClient實(shí)現(xiàn)文件上傳下載的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • JdbcTemplate操作數(shù)據(jù)庫(kù)的具體方法

    JdbcTemplate操作數(shù)據(jù)庫(kù)的具體方法

    這篇文章主要介紹了JdbcTemplate操作數(shù)據(jù)庫(kù)的具體操作方法,準(zhǔn)備工作需要大家先導(dǎo)入相關(guān)的jar包,建個(gè)數(shù)據(jù)庫(kù),具體操作方法跟隨小編一起看看吧
    2022-03-03
  • Java+opencv3.2.0實(shí)現(xiàn)重映射

    Java+opencv3.2.0實(shí)現(xiàn)重映射

    這篇文章主要為大家詳細(xì)介紹了Java+opencv3.2.0實(shí)現(xiàn)重映射的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 使用Servlet Filter實(shí)現(xiàn)系統(tǒng)登錄權(quán)限

    使用Servlet Filter實(shí)現(xiàn)系統(tǒng)登錄權(quán)限

    這篇文章主要為大家詳細(xì)介紹了使用Servlet Filter實(shí)現(xiàn)系統(tǒng)登錄權(quán)限,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Java關(guān)鍵字synchronized原理與鎖的狀態(tài)詳解

    Java關(guān)鍵字synchronized原理與鎖的狀態(tài)詳解

    在Java當(dāng)中synchronized關(guān)鍵字通常是用來(lái)標(biāo)記一個(gè)方法或者代碼塊。本文將通過(guò)示例為大家詳細(xì)介紹一下Synchronized的各種使用方法,需要的可以參考一下
    2022-08-08
  • Reactor中的onErrorContinue?和?onErrorResume

    Reactor中的onErrorContinue?和?onErrorResume

    這篇文章主要介紹了Reactor中的onErrorContinue?和?onErrorResume,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-09-09
  • Java基礎(chǔ)-Java基本數(shù)據(jù)類型

    Java基礎(chǔ)-Java基本數(shù)據(jù)類型

    這篇文章主要介紹了Java基礎(chǔ)-Java基本數(shù)據(jù)類型,變量就是申請(qǐng)內(nèi)存來(lái)存儲(chǔ)值。也就是說(shuō),當(dāng)創(chuàng)建變量的時(shí)候,需要在內(nèi)存中申請(qǐng)空間,下面我們就來(lái)對(duì)Java基本數(shù)據(jù)類型作簡(jiǎn)單的介紹,需要的朋友可以參考一下
    2022-01-01
  • MyBatis綁定錯(cuò)誤提示BindingException:Invalid bound statement (not found)的解決方法

    MyBatis綁定錯(cuò)誤提示BindingException:Invalid bound statement (not f

    這篇文章主要介紹了MyBatis綁定錯(cuò)誤提示BindingException:Invalid bound statement (not found)的解決辦法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧
    2017-01-01
  • Java面向?qū)ο蟮姆庋b你了解嗎

    Java面向?qū)ο蟮姆庋b你了解嗎

    這篇文章主要為大家詳細(xì)介紹了Java面向?qū)ο蟮姆庋b,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • Java 常量字符串過(guò)長(zhǎng)的解決方法

    Java 常量字符串過(guò)長(zhǎng)的解決方法

    這篇文章主要介紹了Java 常量字符串過(guò)長(zhǎng)的解決方法,常量字符串過(guò)長(zhǎng)會(huì)提示報(bào)錯(cuò),下面我們就一起來(lái)了解一下解決方法
    2021-04-04

最新評(píng)論

武隆县| 闵行区| 庆安县| 新建县| 福建省| 天门市| 卢湾区| 高清| 达日县| 班玛县| 万宁市| 南通市| 玛纳斯县| 类乌齐县| 耒阳市| 家居| 施秉县| 东莞市| 武乡县| 沙湾县| 郑州市| 宜兰县| 确山县| 英吉沙县| 贵溪市| 收藏| 义马市| 景谷| 襄樊市| 丹寨县| 新巴尔虎左旗| 广安市| 屏边| 九江市| 高陵县| 双鸭山市| 麟游县| 大安市| 竹溪县| 桂平市| 宕昌县|