国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java數據結構實現二維數組與稀疏數組轉換詳解

Java數據結構實現二維數組與稀疏數組轉換詳解

2022-02-19 14:12葉綠體不忘呼吸 Java教程

稀疏數組是用于優化,壓縮具有以下特點的二維數組:當二維數組中的元素大部分相同,有意義的數據元素較少時,可以使用稀疏數組進行簡化,節省存儲空間

基本介紹

當一個數組中大部分元素為0,或者為同一個值的數組時,可以使用稀疏數組來保存該數組。

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

Java數據結構實現二維數組與稀疏數組轉換詳解

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

稀疏數組轉二維數組:
①先讀取稀疏數組的第一行,根據第一行的數據,創建原始的二維數組
②再讀取稀疏數組后幾行的數據,并賦給原始的二維數組即可

 

應用實例

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

如下為一個棋盤通過二維數組轉換為稀疏數組加以存盤和復盤:

Java數據結構實現二維數組與稀疏數組轉換詳解

1、創建原始二維數組并輸出

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

Java數據結構實現二維數組與稀疏數組轉換詳解

2、將二維數組轉換為稀疏數組

		//將二維數組轉換為稀疏數組
      //先遍歷二維數組,得到非0數據的個數
      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++;
          }
      }
      //創建對應的稀疏數組并賦值
      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];
              }
          }
      }
      //輸出稀疏數組
      for (int[] row : sparseArr){
          for (int data : row){
              System.out.print(data + "\t");
          }
          System.out.println();
      }

Java數據結構實現二維數組與稀疏數組轉換詳解

3、將稀疏數組轉回二維數組

      //將稀疏數組轉換為二維數組
      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();
      }

Java數據結構實現二維數組與稀疏數組轉換詳解

到此這篇關于Java數據結構實現二維數組與稀疏數組轉換詳解的文章就介紹到這了,更多相關Java 稀疏數組內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/m0_46653805/article/details/120680515

延伸 · 閱讀

精彩推薦
  • Java教程Java中的常用輸入輸出語句的操作代碼

    Java中的常用輸入輸出語句的操作代碼

    這篇文章主要介紹了Java中的常用輸入輸出語句的操作代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參...

    Lu_kuan@9282021-08-04
  • Java教程springboot 如何配置多個jndi數據源

    springboot 如何配置多個jndi數據源

    這篇文章主要介紹了springboot 如何配置多個jndi數據源的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教...

    UziNb6472021-10-22
  • Java教程Mybatis-Plus BaseMapper的用法詳解

    Mybatis-Plus BaseMapper的用法詳解

    這篇文章主要介紹了Mybatis-Plus BaseMapper的用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下...

    金色的魚兒5662020-08-27
  • Java教程springboot項目攔截器重定向循環問題的解決

    springboot項目攔截器重定向循環問題的解決

    這篇文章主要介紹了springboot項目攔截器重定向循環問題的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教...

    yumi332210642021-12-14
  • Java教程java冒泡排序和選擇排序詳解

    java冒泡排序和選擇排序詳解

    這篇文章主要介紹了java數組算法例題代碼詳解(冒泡排序,選擇排序),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋...

    Stars-Nine4682021-09-24
  • Java教程idea中創建多module的maven工程的方法

    idea中創建多module的maven工程的方法

    這篇文章主要介紹了idea中創建多module的maven工程的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    烏龜殼10222021-06-08
  • Java教程spring boot實戰教程之shiro session過期時間詳解

    spring boot實戰教程之shiro session過期時間詳解

    這篇文章主要給大家介紹了關于spring boot實戰教程之shiro session過期時間的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的...

    思與學7942021-01-14
  • Java教程Java命令設計模式詳解

    Java命令設計模式詳解

    這篇文章主要為大家詳細介紹了Java命令設計模式,對命令設計模式進行分析理解,感興趣的小伙伴們可以參考一下 ...

    wangxin03144902020-03-27
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 久久久久久久久久久福利观看 | 综合色久 | 国产成人免费在线 | 国产传媒视频 | 国产精品久久久久精 | 中文字幕亚洲一区二区va在线 | 亚洲视频在线一区 | 国产精品美女久久久久高潮 | 久久国产成人 | 日韩精品在线观看视频 | 密桃在线视频 | 乱人伦xxxx国语对白 | 青草福利| 精品久久久久一区二区国产 | 综合色播 | 欧洲一级毛片 | 成人午夜精品一区二区三区 | 国产精品久久久久久久久久久久 | 亚洲小视频 | 中文字幕一区二区三区在线观看 | 欧美日韩高清不卡 | 精品美女一区 | 午夜精品福利一区二区三区蜜桃 | 日韩欧美在线观看视频 | 久久亚洲欧美日韩精品专区 | 国产a自拍 | 国产精品美女久久久久久久网站 | 欧美一级在线视频 | 91久久久久久久久久久久久久久久 | 狠狠综合久久 | 国产精品久久久久久久久久久免费看 | 成人日韩在线视频 | 欧美一级片在线观看 | 国产精品不卡视频 | 免费精品 | 国产午夜视频 | 国产精品久久久久久久久图文区 | 国产无套丰满白嫩对白 | 亚洲区视频在线观看 | 日本久久综合 | 91视频播放|