關於稀疏陣列

2022-07-13 18:48:09 字數 1928 閱讀 8097

比如這個棋盤,如果要記錄黑藍棋子的位置首先會想到運用二維陣列,我們把二維數組建好後(1是黑,2是藍),發現很多空白位置浪費了大量的記憶體空間

我們這個時候可以用稀疏陣列來儲存「有效資料

稀疏陣列一共有三列(列固定),分別表示行號,列號和值

第一行:記錄初始陣列的行、列、有效值(有意義的值)

其他行:逐次記錄有效值的行號、列號和值

由圖可知,稀疏陣列總行數為有效值(假設有效值為num)num+1,列數為3

1int array1=new

int[11][11];

2 //

為陣列賦值,1是黑色,2是藍色

3 array1[1][2]=1;

4 array1[2][3]=2;

5 //

遍歷陣列

6 for (int

row:array1)

10system.out.println();

11}12 int num=0;

13 //

再次遍歷陣列,找出實際存在的數有幾個

14 for (int i=0;i<11;i++)

19}20}

21 system.out.println("num="+num);

22 23 //

開始定義稀疏陣列

24 int sparse_array=new

int[num+1][3];

25 sparse_array[0][0]=11;

26 sparse_array[0][1]=11;

27 sparse_array[0][2]=num;

28 29 //

再次遍歷為稀疏陣列賦值

30 int count=0;

31 for (int i=0;i<11;i++)

39}40}

41 42 //

輸出稀疏陣列

43 system.out.println("+++++++++++++++++++++稀疏陣列++++++++++++++");

44 for (int i=0;i)

47system.out.println();

48 49 //

稀疏陣列恢復

50 int array2=new

int[sparse_array[0][0]][sparse_array[0][1]];

51 //

為稀疏陣列迴圈並賦值

52 for (int i=1;i)

55 56 //

顯示恢復的陣列

57 system.out.println("++++++++++++++++++恢復的陣列+++++++++++++++");

58 for (int

row:array2)

62system.out.println();

63}64

65

關於為稀疏陣列賦值理解:

count++;

sparse_array[count][0]=i;

sparse_array[count][1]=j;

sparse_array[count][2]=array1[i][j];

為什麼用count?

我們是用迴圈逐行賦值的,為一行賦值時,只有列會變,所以定義乙個count鎖定行

文章是看完尚學堂的韓順平老師稀疏陣列的課後寫的,寫下來希望加強下記憶

關於sparseArray稀疏陣列

關於稀疏陣列 二維陣列 轉 稀疏陣列的思路 遍歷 原始的二維陣列,得到有效資料的個數 sum 根據sum 就可以建立 稀疏陣列 sparsearr int sum 1 3 將二維陣列的有效資料資料存入到 稀疏陣列 稀疏陣列轉原始的二維陣列的思路 先讀取稀疏陣列的第一行,根據第一行的資料,建立原始的二...

稀疏陣列,稀疏矩陣概念

稀疏矩陣 矩陣中非零元素的個數遠遠小於矩陣元素的總數,並且非零元素的分布沒有規律,通常認為矩陣中非零元素的總數比上矩陣所有元素總數的值小於等於0.05時,則稱該矩陣為稀疏矩陣 sparse matrix 該比值稱為這個矩陣的稠密度。稀疏陣列 稀疏陣列可以看做是普通陣列的壓縮,但是這裡說的普通陣列是值...

陣列轉稀疏陣列

針對於陣列轉稀疏陣列 壓縮 public static void main string args system.out.println system.out.println 稀疏陣列 將二維陣列轉換為稀疏陣列 先遍歷二維陣列 得到非0資料的個數 記錄非0資料 int sum 0 for int i...