日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

减小程序规模!稀疏数组Sparsearray,数据结构二维数组与稀疏数组转换,Java实现

發布時間:2023/12/2 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 减小程序规模!稀疏数组Sparsearray,数据结构二维数组与稀疏数组转换,Java实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 基本介紹
    • 應用實例


基本介紹

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

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


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

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


應用實例

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

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

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();}


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();}

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();}

總結

以上是生活随笔為你收集整理的减小程序规模!稀疏数组Sparsearray,数据结构二维数组与稀疏数组转换,Java实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。