1.稀疏矩陣:矩陣中絕大多數的元素值為零,只有少數的非零元素值;
2.對稀疏矩陣採用壓縮儲存的目的是為了節省儲存空間,並且,稀疏矩陣壓縮儲存後,還要能夠比較方便地訪問其中的沒個元素(包括零元素和非零元素);
3.對稀疏矩陣進行壓縮儲存有兩種方法:稀疏矩陣的三列二維陣列表示和十字鍊錶方法。
稀疏矩陣的三列二維陣列表示:
(1)每個非零元素用三元組表示:(i,j,v)分別對應(行,列,非零元素);
(2) 為了表示唯一性,除了每個非零元素用乙個三元組表示外,在所有的非零元素三元組之前新增一組資訊(i,j,v)對應(總行數,總列數,非零元素個數),也就是說,我們要確定確切的稀疏矩陣,必須先知道該稀疏矩陣的總行數,總列數,非零個數;
(3)為了便於在三列二維陣列b中訪問稀疏矩陣a中的各元素,通常還附設兩個長度與稀疏矩陣a的行數相同的向量pos與num。其中pos[k]表示稀疏矩陣a中的第k行的第乙個非零元素(如果有的話)在三列二維組b中的行號;num[k]表示稀疏矩陣a中第k行中非零元素的個數;
pos[0]=0; pos[k]=pos[k-1]+num[k-1]
4.三列二維陣列表示的稀疏矩陣類如下:
檔名:x_array.h
#include #include using namespace std;
template struct b
;//三列二維陣列表示的稀疏矩陣類
template class x_array
;// 以三元組形式鍵盤輸入稀疏矩陣非零元素
template void x_array::in_x_array()
pos=new int[mm];
num=new int[mm];
for(k=0;kvoid x_array::cp_x_array(int m,int n,int t,bb)
,,,,,,,};
x_arrayx,y,z,xt,c;
x.cp_x_array(7,8,8,a);
cout<
3.實驗結果:
部落格69 用一維陣列來存二維稀疏矩陣
內容 今天記錄下使用一維結構還儲存二維稀疏矩陣。因為稀疏矩陣中,有數值的量佔全數量的比重較小,如果使用二維陣列來儲存就會比較耗費空間,那麼其實可以使用一維陣列來儲存就可以了。這個剛好也是春招的一道筆試題,在之前的資料結構書裡也有看到過類似的做法。我就不再打一遍了,直接從我的本地ide截出重要的部分了...
二維陣列的指標表示
1.型別說明 int b 定義乙個int型指標變數 int p 3 定義乙個int型指標陣列的變數 int 3 或 int d 3 定義乙個陣列指標變數 2.初始化賦值 假設二維陣列為 int a 3 3 1 用指標b表示二維陣列時為 int b a 0 將指標b指向a的首元素位址 二維陣列的表示方...
二維陣列轉稀疏陣列的思路
二維陣列轉稀疏陣列的思路 遍歷 原始的二維陣列,得到有效資料的個數sum 根據sum就可以建立稀疏陣列sparsearr int sum 1 3 將二維陣列的有效資料存入到稀疏陣列 建立乙個原始大的二維陣列11 11 0 表示沒有棋子 int chessarr1 newint 11 11 chess...