陣列與矩陣

2021-08-03 16:38:55 字數 2150 閱讀 8788

[toc]

陣列是我們比較常接觸的一種資料結構了,就我們所了解的,陣列從一維到多維不等,由陣列演變出來的另一概念,被稱之為矩陣,但是其實質還是一種有序的序列。

接下來給出一維陣列的實現。

class

array

int arraysize()

int & operator (int i)const; //過載下標符

array & operator= (const

array &v)const; //過載複製運算子

array & operator+ ()const; //過載一元加法

array & operator+ (const

array &v)const; //過載二元加法

array & operator- ()const; //過載一元減法

array & operator- (const

array &v)const; //過載二元減法

};

其中,陣列的運算可以通過函式來實現,並不一定需要通過過載運算子來實現,這也說明,在程式設計時,方法不是主要的,只要知道最核心的思想,實現方法怎麼順手怎麼來。

class matrix

int rows()const

int columns()const

int & operator() (int i, int j)const; //過載下標操作符

matrix &operator+ ()const;

matrix &operator+ (const matrix &m)const;

matrix &operator- ()const;

matrix &operator- (const matrix &m)const;

matrix &operator* (const matrix &m)const;

};

如果採用矩陣儲存資料時,可能會出現部分位置空閒,元素重複等情況,會造成大量的空間浪費,如此一來便出現了一些特殊矩陣:

對角矩陣

在數學中規定,乙個n x n維方陣,其非對角線上的元素均為0,就稱這種矩陣為對角矩陣

通過定義,我們便可發現,乙個n x n維對角矩陣,至多有n個非零元素,也即只需儲存n個對角元素的資訊。

這種情況,我們可以通過一維陣列進行儲存,通過相應的運算,決定對角元素所在位置。

但這相應的運算其實可以是a[i]儲存矩陣a[i][i]的元素。

三角矩陣

三角矩陣又可細分為上三角矩陣下三角矩陣

在數學中規定,乙個n x n維方陣,其中對於任意i

稀疏矩陣不能使用普通的矩陣進行儲存,於是我們想到可以直接儲存稀疏矩陣中的有效資訊,進而誕生了三元組表

三元組表是由結點構成,每乙個結點又是由乙個結構體構成,該結構體有row,col,value三個域,儲存元素的行列值資訊。

上圖為三元組表的內容。

三元組表的實現為:

struct trituple

;class sparsematrix

;

稀疏矩陣的另一種實現是十字鍊錶,這種十字鍊錶是由結點構成,結點中的內容為,左鄰非零元素指標,上鄰非零元素的指標,以及行列值的資訊。

聽起來這種儲存方式要比三元組表麻煩,實際上也確實如此,不過這種儲存方式奉行的是犧牲空間換時間原則,因此查詢起來速度還是很快的。

這裡說說三元組表的缺點,三元組表無論是新增或是刪除矩陣中的非零元素,又或是說對矩陣實施一些操作(如運算),都會引起矩陣中非零元素的個數和位置變化,這種變化會使三元組表大量的結點進行移動,效率較低,使用鏈結儲存則避免了這些問題。

陣列與矩陣

建立陣列 建立簡單的陣列 x a b c d e f 建立包含指定元素的行向量。x first last 建立從first開始,加1計數,到last結束的行向量。x increment last 建立從first開始,加increment計數,到last結束的行向量。x linspace first...

陣列與矩陣

陣列 一維陣列 陣列就是有序的元素序列 元素 簡單說就是存放在每個格中的內容 值 二維陣列 釋義 一維陣列的每個元素都是一維陣列 矩陣 在數學中,矩陣 matrix 是乙個按照長方陣列排列的複數或實數集合 矩陣與二維陣列類似 特殊矩陣 零矩陣 內部元素全部為0,一般用0m n表示 方陣 對於行教和列...

陣列與矩陣

陣列與矩陣 陣列 儲存空間連線的表結構。矩陣 帶二維資訊的資料,一般使用二維資料來儲存矩陣。特殊矩陣 上三角形矩陣 0 1 3 6 2 4 7 5 8 9 壓縮方法 用一維陣列進行儲存 陣列的長度 n 1 n 2 對應關係 j 1 j 2 i i和j要滿足 i j 下三角形矩陣 0 1 2 3 4 ...