生活随笔
收集整理的這篇文章主要介紹了
数据结构和算法之稀疏数组
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、什么是稀疏數組呢?
定義一個11*11的二維數組int[ ][ ] cherryArr=new int[11][11]
其中
cherryArr1[1][2]=1;
cherryArr1[2][3]=2;
cherryArr1[4][4]=5;
那么它轉換為稀疏數組是什么樣的呢?
稀疏數組一共有三列,第一列是二維數組的某個數據的行,第二列是二維數組的某個數據的列;第三列是二維數組中的某個數據;該稀疏數組第一行例外,11 11 3各代表二維數組的行、列、多少個非0數據;
二、稀疏數組有什么用呢?
在處理如五子棋這種棋盤時,使用稀疏數組保存黑子和白子的位置,可以壓縮數據,節約空間的目的;
三、稀疏數組和二維數組的相互轉換
1.思路
2.代碼
public class SpareArray {public static void main(String
[] args
) {int cherryArr1
[][]=new int[11][11];cherryArr1
[1][2]=1;cherryArr1
[2][3]=2;cherryArr1
[4][4]=5;System
.out
.println("二維數組如下");for (int[] row
:cherryArr1
){for(int item
:row
){System
.out
.printf("%d\t",item
);}System
.out
.println();}int num
=0;for (int[] row
:cherryArr1
){for (int item
:row
){if (item
!=0){num
++;}}}int sparseArr
[][]=new int[num
+1][3];sparseArr
[0][0]=11;sparseArr
[0][1]=11;sparseArr
[0][2]=num
;int temp
=1;for (int i
=0;i
<11;i
++){for (int j
=0;j
<11;j
++){if (cherryArr1
[i
][j
]!=0){sparseArr
[temp
][0]=i
;sparseArr
[temp
][1]=j
;sparseArr
[temp
][2]=cherryArr1
[i
][j
];temp
++;}}}System
.out
.println("二維數組轉為稀疏數組如下:");for (int i
=0;i
<sparseArr
.length
;i
++){System
.out
.printf("%d\t%d\t%d\t\n",sparseArr
[i
][0],sparseArr
[i
][1],sparseArr
[i
][2]);;}int[][] cherryArr2
=new int[sparseArr
[0][0]][sparseArr
[0][1]];for (int i
=1;i
<num
+1;i
++){cherryArr2
[sparseArr
[i
][0]][sparseArr
[i
][1]]=sparseArr
[i
][2];}System
.out
.println("稀疏數組轉二維數組如下:");for (int[] row
:cherryArr2
){for (int item
: row
){System
.out
.printf("%d\t",item
);}System
.out
.println();}}
}
總結
以上是生活随笔為你收集整理的数据结构和算法之稀疏数组的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。