菜鳥學演算法(二)稀疏陣列

2021-10-22 05:01:12 字數 1267 閱讀 7354

日常學習筆記~

稀疏陣列(稀疏矩陣)

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

稀疏陣列-優點:稀疏陣列在陣列中存在大量相同元素的情況下,比傳統二維陣列要更節省空間

二維陣列與稀疏陣列(以4行4列為例展示)

二維陣列

0 0 0 0

1 0 6 0

0 0 0 0

稀疏陣列

4 4 2

1 0 1

1 2 6

稀疏陣列的處理思路:

1.記錄原二維陣列共有幾行幾列,有多少個不同的值

2.把具有不同值的元素的行列以及值記錄在乙個小規模的二維陣列中,從而達到縮小原陣列規模的效果

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

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

2.根據有效資料的個數建立稀疏陣列,稀疏陣列sparsearr[有效資料個數+1][3]

3.將二維陣列的有效資料存入到稀疏陣列中,其中稀疏陣列第0行儲存的是原二維陣列的行數、列數以及有效資料個數,其餘行儲存的是二維陣列中各有效個數的行、列和值

具體**如下:

int arr[

]=newint[4

][4]

;//二維陣列的建立

//陣列有效資料賦值

arr[1]

[0]=

1; arr[1]

[2]=

6;//遍歷二維陣列,得到有效資料個數

int sum =0;

for(

int i=

0;i<

4;i++)}

}int sparsearr[

]=newint

[sum+1]

[3];

//給稀疏陣列賦值

sparsearr[0]

[0]=

4;sparsearr[0]

[1]=

4;sparsearr[0]

[2]=sum;

//遍歷二維陣列,將非0的值存放到稀疏陣列中

int count=0;

//用於記錄是第幾個非0資料

for(

int i=

0;i<

4;i++)}

}

稀疏陣列恢復為二維陣列擇日更新

未完待續…

稀疏陣列演算法

用於壓縮空間 稀疏陣列練習 1.建立乙個二維陣列 11 11 0 沒有資料可以壓縮 1 表示值1 2 表示值2 int array1 new int 11 11 array1 1 2 1 array1 2 3 2 system.out.println 輸出要壓縮的陣列 for int ints ar...

二 稀疏陣列

先看乙個實際需求,編寫乙個五子棋程式,有存檔和續上盤的功能。當乙個陣列中大部分元素為0,或者為同乙個值時,可以使用稀疏陣列來儲存改陣列。稀疏陣列的處理方法是 使用稀疏陣列,來保留類似前面的二維陣列 棋盤 地圖 把稀疏陣列存檔,並且可以重新恢復原來的二維陣列 整體思路 1.遍歷原始的二維陣列,得到有效...

菜鳥學演算法 廣度優先演算法

廣度優先演算法是在圖中的一種遍歷方法,圖用來模擬一組連線,關係網等等,圖由節點node和邊edge組成,乙個節點可能與眾多節點直接相連,這些節點被稱為鄰居 廣度優先搜尋是一種用於圖的搜尋演算法,可以解決兩類問題,如上圖,a節點有前往到g節點的路徑嗎?a節點前往g節點那條路徑最短?廣度優先搜尋通過不斷...