陣列 (Array)      授課老師:蕭志明.

Slides:



Advertisements
Similar presentations
人類起源 一 天上來的 一 天上來的 : 1 中國布朗族 : 人是從天上掉下來的。洪荒時 代,天下無人,一天刮起狂風暴雨,天落 下五人,為各族的祖先。 2 中國崩龍族 : 天上下來八個神造世界,他 們聞到大地的香味而吃了芳香的泥土,在 地上住了九千年,其中四個變成女人,四 個變成男人,成了人類最早的父母。
Advertisements

窦娥冤 关汉卿 感天动地 元·关汉卿.
第八章 互换的运用.
報告書名:父母會傷人 班級:二技幼四甲 姓名:吳婉如 學號:1A2I0034 指導老師:高家斌
聚焦文化竞争力.
高等代数课件 陇南师范高等专科学校数学系 2008年制作.
會計資訊系統 專章A.
第三章 調整與編表.
概其要、析其理 ——议论文事实论据修改 昌平二中 王丽娟
媽,我們真的不一樣 青少年期與中年期 老師: 趙品淳老師 組員: 胡珮玟4A1I0006 馬菀謙4A1I0040
小班早期阅读讲座.
“悦”读,飞越 “考场” 心神飞越 温州中学 郑可菜.
知其不可而为之.
校园信息管理系统 河北科技大学网络中心 2000/4/10.
中国画家协会理事、安徽省美术家协会会员、 工艺美术师、黄山市邮协常务理事余承平主讲
第三章 保险的数理基础.
数列(一) 自强不息和谐发展 授课教师:喻永明.
爸爸的花儿落了 林 海 音.
班級:二幼三甲 姓名:郭小瑄 、 詹淑評 學號:1A2I0029 、1A2I0025
第三节 矩阵的逆Inverse of a Matrix
徵收苗栗市福全段147、1588及文心段10、11地號等4筆土地之
劳动统计专业年报培训 社会科 洪惠娟 2009年11月.
第十一章 真理与价值 主讲人:阎华荣.
指導老師:陳韻如 姓名:吳宜珊 學號:4A0I0911 班級:幼保二乙
汉字的构造.
诵读欣赏 古代诗词三首.
十 代 词 制作 阚景忠 讲授 阚景忠.
讲 义 大家好!根据局领导的指示,在局会计科和各业务科室的安排下,我给各位简要介绍支付中心的工作职能和集中支付的业务流程。这样使我们之间沟通更融洽,便于我们为预算单位提供更优质的服务。 下面我主要从三方面介绍集中支付业务,一是网上支付系统,二是集中支付业务流程及规定等,
中国人民公安大学经费管理办法(试行) 第一章总则 第四条:“一支笔” “一支笔”--仅指单位主要负责人。负责对本 单位的经费进行审核审批。
小儿营养不良 第四篇第二章第二节小儿营养不良.
第七章 固 定 资 产.
2016年莱芜市乡村医生在岗培训 启动会.
单元 SD 5 菜鸟学飞 附件二 想学飞的职场菜鸟.
傳統童玩遊戲創新 組別:第八組 班級:幼保二甲 組員: 4A0I0005柯舒涵 4A0I0011謝孟真
資料結構與演算法 課程教學投影片.
第四章 时间序列的分析 本章教学目的:①了解从数量方面研究社会经济现象发展变化过程和发展趋势是统计分析的一种重要方法;②掌握时间数列编制的基本要求;③理解和掌握水平速度两方面指标的计算及运用④理解和掌握长期趋势分析和预测的方法。 本章教学重点:现象发展的水平指标和速度指标。 本章教学难点:现象变动的趋势分析。
统计从业资格考试培训 主讲:张良.
Chapter 2 陣列 2.1 陣列表示法 2.2 C 語言的陣列表示法 2.3 矩陣 2.4 多項式表示法
会计账簿 6 会计账簿的概念、意义、种类 会计账簿的格式及登记 结帐与对账 上海大学 会计系.
屏東縣105年度 友善校園事務與輔導工作- 國中適性輔導工作專業知能研習(初階課程) 桌遊在班級經營與學生輔導 之應用與連結
贴近教学 服务师生 方便老师.
運輸與空間的交互作用 運輸發展的階段 一、分散的港口 二、侵入路線 三、發展支線 四、初步相互連結 五、完全相互連結 六、高度優越的幹線
六年级 语文 下册 第四单元 指尖的世界.
专题研讨课二: 数组在解决复杂问题中的作用
马克思主义基本原理概论 第三章 人类社会及其发展规律.
(浙教版)四年级品德与社会下册 共同生活的世界 第四单元 世界之窗 第二课时.
行政院國軍退除役官兵輔導委員會 嘉義榮民醫院.
第五章 数组和 广义表 数组 稀疏矩阵 广义表.
例1.设 求AB..
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
第八章 欧氏空间 8.1 向量的内积 8.2 正交基 8.3 正交变换 8.4 对称变换和对称矩阵.
張智星 清大資工系 多媒體檢索實驗室 第九章: 矩陣的處理與運算 張智星 清大資工系 多媒體檢索實驗室.
第九章: 矩陣的處理與運算 張智星 (Roger Jang)
線 性 代 數 第 3 章 行列式.
Chapter 2 聯立線性方程式與矩陣 授課教師:李金鳳(Amy Lee)
排列组合 1. 两个基本原理 分类加法计数原理 分步乘法计数原理.
1.3 矩阵与数组 MATLAB中矩阵的生成 MATLAB矩阵操作 数组创建与运算.
公立學校教職員退休資遣撫卹條例重點說明 苗栗縣政府人事處編製 主講人:陳處長坤榮 107年5月2日.
第二节 极限 一、数列极限 定义:.
第6章 数组与广义表 6.1 数组的定义及其基本操作 6.2 数组的顺序存储结构 6.3 矩阵的压缩存储 6.4 广义表的概念
計算機程式 授課教師:廖婉君教授 第六單元 Arrays
第三节 常见天气系统.
微信商城系统操作说明 色卡会智能门店.
陣列的位址計算.
两个变量的线性相关 琼海市嘉积中学 梅小青.
Xián 伯 牙 绝 弦 安徽淮南市八公山区第二小学 陈燕朵.
大綱 一.受試者之禮券/禮品所得稅規範 二.範例介紹 三.自主管理 四.財務室提醒.
第2章 陣列結構 資料結構設計與C++程式應用
第八章 异步电动机.
第四章 買賣業會計.
Presentation transcript:

陣列 (Array)      授課老師:蕭志明

陣列特性 陣列可說是最基本的資料結構,也可將陣列稱為循序串列,因為每一元素的排列是依序的。 線性串列又稱循序串列(sequential list)或有序串列(ordered list)。其特性乃是每一項依據它在串列的位置,可以形成一個線性的排列次序,所以x[i]在 x[i + 1]之前。

陣列的表示法 線性串列經常發生的操作如下: 1. 取出串列中的第i項;0≤ i ≤ n-1。 2. 計算串列的長度。 2. 計算串列的長度。 3. 由左至右或由右至左讀此串列。 4. 在第i項加入一個新值,使其原來的第i,i+1,......,n項變為第i+1,i+2,......,n+1項。 5. 刪除第i項,使原來的第i+1,i+2,......,n項變為第i,i+1,......,n-1項。

陣列的表示法 在C程式語言中常利用陣列設置線性串列,以線性的對應方式將元素ai置於陣列的第i個位置上,若要讀取ai時,可利用ai的相對位址等於陣列的起始位址加i*d來求得,其中d是每一元素所佔空間的大小,不要忘記C的陣列從0開始喔!

一維陣列 一維陣列(one dimension array) 若陣列是A[0 : u-1],並假設每一個元素佔d個空間,則A[i]=α+i*d,其中α是陣列的起始位置。

一維陣列(續) Example: 記憶體配置 圖示 1 2 3 4 5 6 7 8 9 int ary[10]; ary[i]的記憶體位置 = 陣列第一個元素位置 + (i * 所宣告資料型態所佔的大小) = ary + i*4 //整數長度為4Bytes 圖示 索引值 1 2 3 4 5 6 7 8 9 內容值

一維陣列記憶體圖示 記憶體位置 ary[10] 陣列索引 x+0*4 ary[0] x+1*4 ary[1] x+2*4 = x+8

二維陣列 假若有一陣列是A[0 : u1-1, 0 : u2-1],表示此陣列有u1列及u2行;每一列是由u2個元素組成。 二維陣列化成一維陣列時,對映方式有二種:一種以列為主(row-major),二為以行為主(column-major)。

二維陣列(以列為主) 以列為主:視此陣列有u1個元素0, 1, 2, ..., u1-1,每一元素有u2個單位,每個單位佔d個空間。其情形如圖2-1所示:

二維陣列(以列為主)  由圖2-1知A[i,j]=α+i*u2d+j*d,其中α為此陣列第一個元素的位址

二維陣列(以行為主) 以行為主:視此陣列有u2個元素0, 1, 2, ..., u2,其中每一元素含有u1個單位,每單位佔d個空間,其情形如圖2-2所示:

二維陣列(以行為主) 由圖2-2知A[i,j]=α+j*u1d+i*d,其中α為此陣列第一個元素的位址

陣列的表示法  假若陣列是A[s1 : u1 , s2 : u2],則此陣列共有m=u1- s1+1列,n=u2-s2+1行。計算A(i,j)的位址如下: 1. 以列為主: A[i,j]=α+(i-s1)nd+(j-s2)d 2. 以行為主: A[i,j]=α+(j-s2)md+(i-s1)d

二維陣列 Example: 二維陣列的記憶體位置 圖示 int ary2d[5][4]; ary2d[i][j]的記憶體位置 = 陣列第一個元素位置 +[ i*每一列的元素個數 + j]*(所宣告資料型態所佔的大小) = ary2d + (i*4 + j) * 4 圖示 第一行 第二行 第三行 第四行 第一列 (0,0) (0,1) (0,2) (0,3) 第二列 (1,0) (1,1) (1,2) (1,3) 第三列 (2,0) (2,1) (2,2) (2,3) 第四列 (3,0) (3,1) (3,2) (3,3) 第五列 (4,0) (4,1) (4,2) (4,3)

二維陣列記憶體圖示 記憶體位置 ary2d[5][4] 陣列索引 x+(0*4+0)*4 = x ary2d[0][0] … x+(4*4+0)*4 = x+64 ary2d[4][0] x+(4*4+1)*4 = x+68 ary2d[4][1] x+(4*4+2)*4 = x+72 ary2d[4][2] x+(4*4+3)*4 = x+76 ary2d[4][3]

二維陣列練習

二維陣列練習

三維陣列 Example: 二維陣列的記憶體位置 圖示 int ary3d[3][4][3]; ary3d[i][j][k]的記憶體位置 = 陣列第一個元素位置 +[i*j的個數*k的個數 + j*k的個數 + k]*(所宣告資料型態所佔的大小) = ary3d + (i*4*3 + j*3 + k) * 4 圖示 i j k

陣列的一些應用 上三角形和下三角形表示法 多項式表示法 魔術方陣

上三角形和下三角形表示法 若一矩陣的對角線以下的元素均為零時,亦即aij=0,i>j,則稱此矩陣為上三角形矩陣(upper triangular matrix)。反之若一矩陣的對角線以上的元素均為零,亦即aij= 0,i<j,此矩陣稱為下三角形矩陣(lower triangular matrix),如圖2-4所示:

上三角形和下三角形表示法 由上述得知一個n×n個的上、下三角形矩陣共有[ n(n+1) ]/2個元素,依序對映至D(1:[ n(n+1) ]/2 ) 。

上三角形和下三角形表示法 以列為主: 一個n×n的上三角形矩陣其元素分別對映至D陣列,如下所示: ∴aij=D(k) 其中k=n(i-1)-[i(i-1)]/2+j

上三角形和下三角形表示法 例如圖2-4之(a)的a34元素對映D(k):

上三角形和下三角形表示法 假使是一個n×n的下三角形矩陣,其元素分別對映至D陣列,如下所示: ∴aij=D(k)其中k=[i(i-1)]/2+j 例如圖2-4之(b)的下三角形矩陣的a32位於D(k),而k=[3(3-1) ] /2 +2=5

上三角形和下三角形表示法 2.以行為主: 上三角形矩陣的對應情形如下: ∴aij=D(k) 其中k=[j(j-1)]/2+i 例如圖2-4之(a)的a34位於D(k),其中 k=[ 4(4-1) ] /2+3=6+3=9

上三角形和下三角形表示法 而下三角形矩陣對應情形如下: ∴aij=D(k)其中k=n(j-1)-[j(j-1)]/2+i 如圖2-4之(b)的a32位於D(k),其中 k=4(2-1)-[2(2-1) /2 ]+3=4-1+3=6

上三角形和下三角形表示法  由此可知上三角形矩陣以列為主和下三角形以行為主的計算方式略同,而上三角形矩陣以行為主的計算方式與下三角形以列為主的計算方式略同。

多項式表示法 有一多項式p=anxn+an-1xn-1+...+a1x+a0,我們稱A為n次多項式,aixj是多項式的項(0≤ i ≤ n, 1≤ j ≤ n)其中ai為係數,x為變數,j為指數。

多項式表示法 多項式使用線性串列來表示有兩種方法: 使用一個n+2長度的陣列,依據指數由大至小依序儲存係數,陣列的第一個元素是此多項式最大的指數,如p=(n, an, an-1, ..., a0) 。 另一種方法只考慮多項式中非零項的係數,若有m項,則使用一個2m+1長度的陣列來儲存,分別存每一個非零項的指數與係數,而陣列中的第一個元素是此多項式非零項的個數。

多項式表示法 例如有一多項式 p=8x5+6x4+3x2+12分別利用第1種和第2種方式來儲存,其情形如下:

多項式表示法 假若是一個兩變數的多項式,那如何利用線性串列來儲存呢?此時需利用二維陣列,若m, n分別是兩變數最大的指數,則需要一個(m+1)×(n+1)的二維陣列。如多項式pxy=8x5+6x4y3+4x2y+3xy2+7,則需要一個(5+1)×(3+1)=24的二維陣列,表示的方法如下:

多項式表示法

多項式表示法 兩多項式A、B相加其原理很簡單,比較兩多項式時,有下列三種情況: 這三種情況的運作情形,請參閱程式實作。

多項式表示法

多項式表示法

魔術方陣 有一n×n的方陣,其中n為奇數,請你n×n的魔術方陣,將1到n2的整數填入其中,使其各列、各行及對角線之和皆相等。

魔術方陣 做法很簡單,首先將1填入最上列的中間格,然後往左上方走, (1)以1的級數增加其值,並將此值填入空格; (2)假使方格已填滿,則在原地的下一方格填上數字,並繼續做; (3)若超出方陣,則往下到最底層或往右到最右方,視兩者那一個有方格,則將數目填上此方格; (4)若兩者皆無方格,則在原地的下一方格填上數字。

魔術方陣 例如有一5×5的方陣,其形成魔術方陣的步驟如下,並以上述(1) 、(2) 、(3) 、(4)規則來說明。

魔術方陣 1.將1填入此方陣最上列的中間方格,如下所示:

魔術方陣 2.承1.往左上方走,由於超出方陣,依據規格(3)發現往下的最底層有空格,因此將2填上。如下所示:

魔術方陣 3.承2.往左上方,依據規格(1)將3填上,然後再往左上方,此時,超出方陣,依據規則(3)將4填在最右方的方格,如下所示:

魔術方陣 4.承3.往左上方,依據規則(1)將5填上,再往左上方時,此時方格已有數字,依據規則(2)往5的下方填,如下所示:

魔術方陣 5.餘此類推,依據上述四個規格繼續填,填到15的結果如下:

魔術方陣 6.承5.此時往左上方,發現往下的最底層和往右的最右方皆無空格,依據規則(4)在原地的下方,將此數字填上,如下所示:

魔術方陣 7.繼續往下填,並依據規則(1)、(2)、(3)、(4)最後的結果如下: 此時讀者可以算算各行、各列及對角線之和是否皆相等,答案是肯定的,其和皆為65。