Presentation is loading. Please wait.

Presentation is loading. Please wait.

本章重點 2-1 有序串列(Ordered List) 2-2 介紹陣列(array) 2-3 矩陣(matrix)的應用

Similar presentations


Presentation on theme: "本章重點 2-1 有序串列(Ordered List) 2-2 介紹陣列(array) 2-3 矩陣(matrix)的應用"— Presentation transcript:

1 本章重點 2-1 有序串列(Ordered List) 2-2 介紹陣列(array) 2-3 矩陣(matrix)的應用 2-4 陣列與多項式應用

2 2-1 有序串列(Ordered List) 就是一個有序串列,而且序列中元素的資料型態是數字。而有序串列的定義,可以形容如下:
有序串列可以是空集合,或者可寫成(a1,a2,a3...,an-1,an)。 存在唯一的第一個元素a1與存在唯一的最後一個元素an。 除了第一個元素a1外,每一個元素都有唯一的先行者(precessor),例如ai的先行者為ai-1。 除了最後一個元素an外,每一個元素都有唯一的後續者(successor),例如ai+1是ai的後續者。

3 8種常見的運算 計算串列的長度n。 取出串列中的第i項元素來加以修正。
插入一個新元素到第i項,並使得原來的第i,i+1...,n項,後移變成i+1,i+2...,n+1項。 刪除第i項的元素,並使得第i+1,i+2,…n項,前移變成第i,i+1...,n-1項。 從右到左或從左到右讀取串列中各個元素的值。 在第i項存入新值,並取代舊值。 複製串列。 合併串列。

4 有序串列在電腦中的儲存方式 按照記憶體儲存的方式,可區分為以下兩種方式: 靜態資料結構: 動態資料結構:
或稱為密集串列(dense list),它是一種將有序串列的資料使用連續記憶空間(contiguous allocation)來儲存。例如陣列型態就是一種典型的靜態資料結構。 動態資料結構: 又稱為鍵結串列(linked list),它是一種將有序串列的資料使用不連續記憶空間來儲存。例如指標(pointer)型態就是一種典型的動態資料結構。

5 2-2 介紹陣列(array) 五種屬性: 起始位址:表示陣列名稱(或陣列第一個元素)所在記憶體中的起始位址。
維度(dimension):代表此陣列為幾維陣列,如一維陣列、二維陣列、三維陣列等等。 索引上下限:指元素在此陣列中,記憶體所儲存位置的上標與下標。 陣列元素個數:是索引上限與索引下限的差+1。 陣列型態:宣告此陣列的型態,它決定陣列元素在記憶體所佔有的大小。

6 一維陣列(one-dimension array)
陣列A宣告為A(1:u1),表示A為含n個元素的一維陣列,其中1為下標,u1為上標。 A(1)、A(2) 、 A(3) 、 A(u1) α 、α+1*d、α+2*d 、 α+( u1-1)*d Loc(A(i))= α+(i-1)*d (Loc(A(i))表示A(i)所在的位址)

7 二維陣列(two-dimension array)
假設陣列A宣告為(1:m,1:n),表示A為一個含有m*n個元素的二維陣列名稱,且有m 個列與n個行。我們可以把A(i,j)元素想像成平面上矩陣圖

8 陣列元素與記憶體位址關係 通常依照不同的語言,又可區分為兩種方式: 以列為主(row-major)
Loc(A(i,j))= α+n*(i-1)*d+(j-1)*d 以行為主(column-major) Loc(A(i,j))= α+(i-1)*d+m*(j-1)*d

9 三維陣列(three-dimension array)
如果陣列A宣告為A(1:u1,1:u2,1:u3),表示A為一個含有u1*u2*u3元素的三維陣列。我們可以把A(i,j,k)元素想像成空間上的立方體圖

10 三維陣列-以列為主 以列為主(row-major)
Loc(A(i,j,k))=α+(i-1)*u2*u3*d+(j-1)*u3*d+(k-1)*d

11 三維陣列-以行為主 以行為主(column-major)
Loc(A(i,j,k))=α+(i-1)*u2*u3*d+(j-1)*u3*d+(k-1)*d

12 n維陣列 以列為主(row-major) Loc(A(i1,i2,i3………,in))= α+(i1-1)u2u3u4……und
+(i2-1)u3u4……und +(i3-1)u4u5……und +(i4-1)u5u6……und +(i5-1)u6u7……und : +(in-1-1)und +(in-1)d

13 n維陣列 以行為主(column-major) Loc(A(i1,i2,i3………,in))= α+(in-1)un-1un-2……u1d
+(in-1-1)un-2……u1d : : +(i2-1-1)u1d +(i1-1)d

14 2-3 矩陣(matrix)的應用 基本上,數學的矩陣(matrix)是一種用來描述二維陣列的最好方式。 許多矩陣的運算與應用,都可以使用電腦中的二維陣列解決,例如討論到兩個矩陣的相加、相乘,或是某些稀疏矩陣(sparse matrix)、轉置矩陣(At)、上三角形矩陣(Upper Triangular Matrix)與下三角形矩陣(Lower Triangular Matrix)等等。

15 矩陣的相加 1 3 5 7 9 11 A矩陣 C矩陣 9 8 7 6 5 4 B矩陣 + 3x3

16 轉置矩陣 假設A為mxn矩陣,則At為nxm矩陣,對每一個A(i,j)=At(j,k)則稱At為A的轉置矩陣。

17 矩陣的乘積 A為一個mxn矩陣,B為一個nxp矩陣;也就是A矩陣的行數必須與B矩陣的列數相等。 AxB之後的乘積必須為一個mxp矩陣C。

18 矩陣的乘積計算公式

19 稀疏矩陣(Sparse Matrix) 稀疏矩陣最簡單的定義就是一個矩陣中大部份的元素為0,即可稱為「稀疏矩陣」。

20 稀疏矩陣的儲存 傳統的方式會浪費記憶體空間。 改進方法:假如一個稀疏矩陣有n個非零項目,那麼可以利用一個A(0:t,1:3)的二維陣列來表示。其中A(0,1)代表此稀疏矩陣的列數,A(0,2)代表此稀疏矩陣的行數,而A(0,3)則是此稀疏矩陣非零項目的總數。

21 三項式稀疏矩陣表示方式

22 上三角形矩陣(Upper Triangular Matrix)
上三角形矩陣就是一種對角線以下元素皆為0的nxn矩陣。其中又可分為右上三角形矩陣(Right Upper Triangular Matrix)與左上三角形矩陣(Left Upper Triangular Matrix)。

23 右上三角形矩陣

24 以列為主

25 以行為主

26 左上三角形矩陣

27 下三角形矩陣(Lower Triangular Matrix)
與上角形矩陣相反,就是一種對角線以上元素皆為0的nxn矩陣。 對映到一維陣列B(1:n(n+1))的方式,也可區分為以列為主及以行為主兩種陣列記憶體配置方式。

28 左下三角形矩陣

29 右下三角形矩陣

30 2-4 陣列與多項式的應用 多項式使用陣列結構,可以使用底下兩種模式:
2-4 陣列與多項式的應用 多項式使用陣列結構,可以使用底下兩種模式: 使用一個n+2長度的一維陣列存放,陣列的第一個位置儲存最大指數n,其他位置依照指數n遞減,依序儲存相對應的係數: P=(n,an,an-1,……,a1,a0)儲存在A(1:n+2) 例如P(x)=2x5+3x4+5x2+4x+1,可轉換為成A陣列來表示=>A={5,2,3,0,5,4,1} 只儲存多項式中非零項目。 P(x)=2x5+3x4+5x2+4x+1,可表示成A(1:2m+1)陣列 =>A={5,2,5,3,4,5,2,4,1,1,0}


Download ppt "本章重點 2-1 有序串列(Ordered List) 2-2 介紹陣列(array) 2-3 矩陣(matrix)的應用"

Similar presentations


Ads by Google