資料結構 稀疏陣列

2021-09-25 09:35:38 字數 2104 閱讀 3027

當乙個陣列中大部分元素為0,或者為同乙個值的陣列時,可以使用稀疏陣列來儲存該陣列。

這樣就可以不用記錄很多沒有意義的資料。它是對二維陣列的一種優化(壓縮了二維陣列)。

稀疏陣列的處理方法是:

稀疏陣列的應用場景

1.使用稀疏陣列來儲存二維陣列(大部分數字為0):棋盤,地圖

2.把稀疏陣列存檔,並且可以恢復為原來的二維陣列

舉例:棋盤問題

二維陣列 轉 稀疏陣列的思路

遍歷 原始的二維陣列,得到有效資料的個數 sum

根據sum 就可以建立 稀疏陣列 sparsearr int[sum + 1] [3]

將二維陣列的有效資料資料存入到 稀疏陣列

稀疏陣列轉原始的二維陣列的思路

先讀取稀疏陣列的第一行,根據第一行的資料,建立原始的二維陣列,比如上面的 chessarr2 = int [11][11]

在讀取稀疏陣列後幾行的資料,並賦給 原始的二維陣列 即可.

package com.bite.sparsearr;

/* 0:表示沒有旗子,

1:表示黑棋子

2:表示藍色旗子

*/public

class

sparsearray

system.out.

println()

;}//遍歷二維陣列得到sum個數

int sum=0;

sum=

arr(chessarr1,11,

11);//建立稀疏陣列

int sparsearr[

]=newint

[sum+1]

[3];

//給稀疏陣列賦值

sparsearr[0]

[0]=

11;sparsearr[0]

[1]=

11;sparsearr[0]

[2]=sum;

print

(sparsearr,1,

3);//給稀疏陣列賦值

assignment

(chessarr1,sparsearr,11,

11); system.out.

println

("列印稀疏陣列~~");

print

(sparsearr,3,

3);/*

稀疏陣列---》原始陣列

*///1把稀疏陣列轉為原始的二維陣列

int chessarr2[

]=newint

[sparsearr[0]

[0]]

[sparsearr[0]

[1]]

;//2.在讀取稀疏陣列後的幾行資料(從第二行開始),並賦值給原始的二維陣列

for(

int i=

1;i)//列印原始陣列

print

(chessarr2,11,

11);}

//遍歷陣列,得出8元素個數

public

static

intarr

(int arr[

],int row,

int col)}}

return sum;

}//列印陣列

public

static

void

print

(int arr[

],int row,

int col)

system.out.

println()

;}}//稀疏陣列賦值

public

static

void

assignment

(int arr1[

],int arr2[

],int row,

int col)

} system.out.

println()

;}}}

資料結構 稀疏陣列

資料結構 當乙個陣列中大部分元素為同乙個值時可以使用稀疏陣列來存該陣列 二維陣列轉稀疏陣列 稀疏陣列轉回原始二維陣列 稀疏陣列 public class sparsearray system.out.println 將二維陣列轉成稀疏陣列 1.先遍歷得到非0資料的個數 int sum 0 for i...

資料結構 稀疏陣列

package com.hadwinling.sparearray public class sparearray system.out.println 將二維陣列轉為稀疏陣列的思路 1.先遍歷二維陣列得到 非0 的資料個數 int sum 0 for int i 0 i chessarrary.l...

資料結構 稀疏陣列

稀疏陣列就是將乙個使用率不高的二維陣列轉換為乙個使用率高的二維陣列,節省空間。使用率不高的二維陣列 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 2 0 對應的稀疏陣列 5 4 3 第一行記錄 原陣列的長度 寬度 有效資料數 2 2 1 下邊為記錄有效資料的具體位置,在原陣...