1. 程式人生 > 其它 >JavaSE基礎知識——static關鍵字

JavaSE基礎知識——static關鍵字

稀疏陣列

引入

需求:五子棋的棋盤儲存

因為要儲存許多預設值是0,是非常浪費空間資源的,所以把這些壓縮起來----->稀疏陣列

介紹

  • 當一個數組中大部分元素為0,或者相同值時,可以使用稀疏陣列來儲存他們。

  • 記錄陣列一共有幾行幾列,有多少個不同值

  • 把具有不同值的元素和行列的值記錄在一個小規模的陣列中,從而縮小程式規模。

稀疏陣列的建立,輸出與還原

   //定義一個普通陣列有10行10列儲存在指定位置儲存1,2
int[][] arr=new int[10][10];
arr[1][3]=1;
arr[2][5]=2;
for (int[] ints : arr) {
for (int anInt : ints) {
System.out.print(anInt+"\t");
}
System.out.println();
}

//建立一個稀疏陣列,記錄一下有多少個有效值使用sum
int sum=0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
if(arr[i][j]!=0){
sum++;
}
}
}
System.out.println("一共有"+sum+"個有效值");
int[][] arr1=new int[sum+1][3];//sum+1就是它的行數,3為列數
arr1[0][0]=arr.length;//稀疏陣列用來儲存行數
arr1[0][1]=arr[0].length;//儲存列數
arr1[0][2]=sum;//有效個數
//遍歷稀疏陣列將非零的值,存放到稀疏陣列中
int index=0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
if(arr[i][j]!=0){
index++;
arr1[i][0]=i;
arr1[i][1]=j;
arr1[i][2]=arr[i][j];
}
}
}
System.out.println("輸出稀疏陣列:");
for (int[] ints : arr1) {
for (int anInt : ints) {
System.out.print(anInt+"\t");
}
System.out.println();
}

 System.out.println("還原稀疏陣列");
int[][] arr2=new int[arr1[0][0]][arr1[0][1]];
for (int i = 1; i < arr1.length; i++) {
arr2[arr1[i][0]][arr1[i][1]]=arr1[i][2];//相當與arr2[1][3]=1
}
for (int[] ints : arr2) {
for (int anInt : ints) {
System.out.print(anInt+"\t");
}
System.out.println();
}