概述:
當乙個陣列中大部份元素為0,或者為同一值的陣列時,可以使用稀疏陣列來儲存該陣列。
處理方式:
記錄陣列一共有幾行幾列,有多少不同值
把具有不同值的元素和行列及值記錄在乙個小規模的陣列中,從而縮小程式規模
建立乙個稀疏陣列儲存方式public
class
helloworld
system.
out.println();
}//轉換為稀疏陣列儲存:怎麼樣遍歷有效值
//獲取有效值的個數
int sum=0
;
for(int i=0;i<11;i++)}}
system.
out.println("
有效值個數:
"+sum);
//2.建立乙個稀疏陣列
int arr2=new
int [sum+1][3];//
根據有效個數+1就是他的行數(因為計算有效個數的時候,標題列,他是不會計算的所以他要+1,把標題行算進去),固定列為3列,因為無論有多少個數,我們都只需要行、列、值,這三個資料就可以了
//列印稀疏陣列的頭部,圖可以看上面的,座標0就是頭部
arr2[0][0]=11;//
存了多少行
arr2[0][1]=11;//
存了多少列
arr2[0][2]=sum;//
存了多少個有效值
//遍歷二維陣列,將非0的值,存放稀疏陣列中
int count=0;//
總共有多少個數,這個數值可以當做行
for(int i=0;i//
原來的陣列
for(int j=0;j//
arr[i].length:arr陣列中,每個i的值的length是多少
if(arr[i][j]!=0)}}
//輸出稀疏陣列
system.out.println("
輸出稀疏陣列");
for(int i=0;i)
system.
out.println("
還原稀疏陣列");
//1.讀取稀疏陣列的值
int arr3=new
int [arr2[0][0]][arr2[0][1]];//
[arr2[0][0]]:行,[arr2[0][1]]列
//2.給其中的元素還原值
for(int i=1;i)
//3.列印還原後的陣列
system.out.println("
輸出原始陣列");
for(int ip:arr3)
system.
out.println();}}
}
資料結構和演算法 稀疏陣列
此部分是將上面的思路分析轉換成 實現 public class sparsearray system.out.println 將二維陣列轉換為稀疏陣列 1.先遍歷二維陣列,得到非0資料的個數 int sum 0 for int i 0 i 10 i 2.建立對應的稀疏陣列 int sparsearr...
資料結構與演算法 稀疏陣列
首先先介紹一下線性結構與非線性結構 線性結構是比較常用的資料結構,特點就是資料元素是一對一的關係。線性結構有兩種不同的儲存結構,即順序儲存結構 陣列 和鏈式儲存結構 鍊錶 順序儲存的線性表稱為順序表,順序表中儲存的元素是連續的。鏈式儲存的線性表稱為鍊錶,鍊錶中儲存的元素不一定是連續的,元素節點中存放...
資料結構 稀疏陣列
資料結構 當乙個陣列中大部分元素為同乙個值時可以使用稀疏陣列來存該陣列 二維陣列轉稀疏陣列 稀疏陣列轉回原始二維陣列 稀疏陣列 public class sparsearray system.out.println 將二維陣列轉成稀疏陣列 1.先遍歷得到非0資料的個數 int sum 0 for i...