减小程序规模!稀疏数组Sparsearray,数据结构二维数组与稀疏数组转换,Java实现
生活随笔
收集整理的這篇文章主要介紹了
减小程序规模!稀疏数组Sparsearray,数据结构二维数组与稀疏数组转换,Java实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 基本介紹
- 應用實例
基本介紹
當一個數組中大部分元素為0,或者為同一個值的數組時,可以使用稀疏數組來保存該數組。
稀疏數組的處理方法是:
①記錄數組一共有幾行幾列,有多少個不同的值(0除外)。
②把具有不同值的元素的行列及值記錄在一個小規模的數組中,從而縮小程序的規模。
二維數組轉稀疏數組:
①遍歷原始的二維數組,得到有效數據的個數 sum(除0外不同值)
②根據 sum 創建稀疏數組 sparseArr int[sum+1][3]
③將二維數組的有效數據數據存入到稀疏數組
(稀疏數組的第一行,三列分別記錄二維數組的行、列、有效數據個數)
(后面的行記錄有效數據元素,三列分別記錄行、列、有效數據元素值)
稀疏數組轉二維數組:
①先讀取稀疏數組的第一行,根據第一行的數據,創建原始的二維數組
②再讀取稀疏數組后幾行的數據,并賦給原始的二維數組即可
應用實例
使用稀疏數組,來保留二維數組(棋盤、地圖等等),把稀疏數組存盤,并且可以重新恢復為原來的二維數組數。
如下為一個棋盤通過二維數組轉換為稀疏數組加以存盤和復盤:
1、創建原始二維數組并輸出
2、將二維數組轉換為稀疏數組
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实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iPhone 屏幕被挡住时无法唤醒 Si
- 下一篇: 不可上位!数据结构队列,老实排队,Jav