陣列的位址計算.

Slides:



Advertisements
Similar presentations
index 目次 ( 請按一下滑鼠,解答就會出現喔 !) 接續下頁解答 3-1 極限的概念.
Advertisements

导数 导数 一、主要内容 微分 第二章 习题课 二、典型例题. 求 导 法 则求 导 法 则 求 导 法 则求 导 法 则 基本公式 导 数 导 数 高阶导数 一、主要内容 微 分微 分 微 分微 分.
飲料備製 ( 作業十 ) 組員 : 9A0M0009 林昆樺 9A0M0026 李元盛 9A0M0031 林殷正 ( 組長 ) 9A0M0046 邱于倫 9A0M0048 林裕嘉 9A0M0054 巫紀樺 指導老師 : 葉佳聖.
常用食物含水量表 食物单位原料重 g 含水量 ml 大米饭一碗 (170g) 大米粥一碗 (500g) 面条一碗 (170g) ( 汤另计 ) 蒸蛋糕一碗 (170g) 5025 藕粉 牛奶
三信家商「 105 學年度」 升學進路暨報名作業說明會 教務處實研組 教務處 實研組 日期︰ 104 年 10 月 19 日 時間: am 10:00~11:50 地點:教學行政大樓 7F 講堂.
看到“心理”这两个字,你最先联想到的是什么
教师深入企业参加实践锻炼报告 经管 丰晓芳
导学 第一讲 应用写作概说 讲授人: 安学珍 西北大学写作学硕士 贵州省作家协会会员 课程主讲人 铜仁职业技术学院.
感冒病毒肆虐各地 近以來,,造成十數萬人飽受病魔的摧殘, 不僅醫院裡盡是擤鼻涕的聲音,在各行業的辦公室裡的一眼望過去,
第十章 教师与学生 教学目标 识记:教师职业的特点和价值,教师专业 化,学生的本质 理解:教师在教育过程中的地位与作用,教师
历史事件概览 1950:朝鲜战争、土地改革 1952:土改基本完成 1953:朝鲜战争停战,一五计划开始,社会主义改造开始
香港中學生國民教育計劃 學友社   主辦 教育統籌局 合辦 香港電台  協辦 香港各界慶祝回歸委員會慈善信託基金 贊助.
团务知识讲座 主讲人:刘芳铭.
0~3岁早期家教指导 培训方案 奉贤区实验幼儿园 莫群星.
學習範疇: 數據處理(D) 學習單位: 5D2 棒形圖(二) 學習重點 : 認識複合棒形圖 學習課文 : 五下 C 冊第 11 課.
香溢饺子馆创业计划书.
第十章(上) 实现中华民族的伟大复兴.
它们都是鱼吗?.
胆结石的食疗方法总结.
林檎クラス 外语系08级日语一班.
第五章 中国革命的新道路 复旦大学 高晓林.
酷比精準廣告 聯播網站介紹&優勢 by.
姓名:蘇盈如 班級:2年18班 學號:31742 指導老師:徐必大 老師
第6章 窗体应用程序设计 王德俊 上海交通大学继续教育学院.
親近神的祝福-得智慧得恩惠 張譽騰傳道 聖荷西慕主先鋒教會.
联想科技的供应商可以直销,从而绕过联想科技
青春悄悄来.
《蛋白质工程》 主讲教师:曹运长 博士、副教授 马 云 副教授 佘美华 博士、副教授 授课专业:生物技术、生物科学
日本 WAIZ 有限公司 安井佑介 Yusuke Yasui 成濑实 Minoru Naruse
第十一章 一、本章提要:   本章包括学前儿童科学教育的新进展、“做中学”、“STS”教育、生命教育、探究性教学等五方面的内容。   二、本章重点:   学前儿童科学教育的发展趋势;“做中学”;难点:学前儿童科学教育的发展趋势。
细节描写 睁开明亮的眼观察 唤醒沉睡的心捕捉.
写作 写人要抓住特点 之 动作描写 姓名:李国恩 单位:佛山市南海区里水镇 和顺第一初级中学.
月 下 太 白.
我心中的杜甫形象.
認識火炎山 圖片提供:林玉山老師 & 陳進德老師 教材解說:周金陽老師指導協助 換頁請按滑鼠.
公路工程管理与实务 桥梁工程.
7 岩土工程地质分级与分类 7.1 工程岩体分级 7.2 土的工程分类 本章小结.
同分母分數相除 呂慧君.
教育局 言語及聽覺服務組.
安徽工业大学机械工程学院 2013研究生入学教育 主讲  王全先教授 2013年9月.
預防頸椎病自我按摩操 預防頸椎病自我按摩操 1.
聖母月.
新课程与教学策略 ——兼谈如何上好一堂课.
兒童及少年保護.
郭 忠 岭 聊城市教师教育 改革与发展的回顾与展望 聊城市教育局师训科科长 聊城市教师教育专业委员会秘书长
第十章 現代化的開端 第一節 自強運動 第二節 戊戌變法與立憲運動
第六篇 中央银行与货币供求均衡 第十六章 中央银行 第十七章 货币需求 第十八章 货币供给 第十九章 货币均衡.
导游基础知识 全国部分.
企业涉税业务基本知识宣传 郑州航空港区国家税务局机场税务分局 王 磊.
第2章 给水排水管网 工程规划 土木工程学院 刘宇红.
證道: 我是羊的門,我是好牧人 講題:「耶穌說:”I Am”『我是…』」之(四) : 講員: 梁淑英牧師
佛教大雄中學 2007年度香港中學會考 放榜輔導 升學及就業輔導組.
如何使历史教学更加有效 北京市西城区教育研修学院 张汉林.
关于优秀科技辅导员 综合知识问辩的思考 第24届全国青少年科技创新大赛 优秀青少年科技辅导员评审专家组 天津师范大学杨书远主讲.
第十一章 真理与价值 主讲人:阎华荣.
105年推甄及登記分發說明會 教務處 註冊組課務組.
复习 1. 注意最值与极值的区别. 最值是整体概念而极值是局部概念. 极大值可能小于极小值,极小值可能大于极大值.
实验二、灯的使用、玻璃管加工和塞子钻孔.
第七章 固 定 资 产.
复习 1. 微分中值定理的条件、结论及关系 费马引理 拉格朗日中值定理 罗尔定理 柯西中值定理 2. 微分中值定理的应用 关键:
資料結構與演算法 課程教學投影片.
[聚會時,請將傳呼機和手提電話關掉,多謝合作]
实践 课题 周围环境对当代大学生成长的影响 指导老师:王永章 小组成员:陈荣、刘若楠、张红艳、吕雪丹、樊金芳、李惠芬、黄婧
[聚會時,請將傳呼機和手提電話關掉,多謝合作]
行政院國軍退除役官兵輔導委員會 嘉義榮民醫院.
公立學校教職員退休資遣撫卹條例重點說明 苗栗縣政府人事處編製 主講人:陳處長坤榮 107年5月2日.
陣列 (Array)      授課老師:蕭志明.
使徒行傳.
第2章 陣列結構 資料結構設計與C++程式應用
幂的乘方.
Presentation transcript:

陣列的位址計算

陣列的表示 名稱 起始位址(第一個元素儲存的位址) 維度(Dimension) 索引(Index)上限 索引(Index)下限 元素的資料型態(決定所佔的記憶體大小) 元素個數(索引上限-索引下限+1)

一維陣列→起始位置+元素長度*索引 起始位置 元素的長度 例如 int Array[7]始位置為1000,一個int元素長度是2byte,那麼Array[7]的記憶體為何? 索引 Array[0] Array[1] Array[2] Array[3] Array[4] Array[5] Array[6] Array[7] 記憶體 1000 1002 1004 1006 1008 1010 1012 1014

二維陣列 二維陣列的儲存方式會分為兩種: 以列為主(Row-Major):每一列走完換一行 以行為主(Column-Major):每一行走完換一列

以列為主(Row-Major) 定義一個int Array[2][6],假設Array[0][0]的位址是1000,求Array[1][1]? Array[i][j]的記憶位址 = 起始位址 +  (元素距離) * [ (j * 每一行元素個數) + i ] 索引 Array[0][0] Array[0][1] Array[0][2] Array[0][3] Array[0][4] Array[0][5] 記憶體 1000 1002 1004 1006 1008 1010 Array[1][0] Array[1][1] Array[1][2] Array[1][3] Array[1][4] Array[1][5] 1012 1014 1016 1018 1020 1022

以行為主(Column-Major) 定義一個int Array[2][6],假設Array[0][0]的位址是1000,求Array[1][1]? Array[i][j] 的記憶體 = 起始位址 +  (元素大小) * [ (i * 每一列元素個數) + j ] 索引 Array[0][0] Array[0][1] Array[0][2] Array[0][3] Array[0][4] Array[0][5] 記憶體 1000 1004 1008 1012 1016 1020 Array[1][0] Array[1][1] Array[1][2] Array[1][3] Array[1][4] Array[1][5] 1002 1006 1010 1014 1018 1022

陣列位址公式表示法

一維陣列A[1 to n] a1a2.....an名稱:A 起始位址: 維度:1 索引上限:n 索引下限:1 元素的大小或長度(資料型態):d 元素個數:n 儲存方式:元素a j的儲存位址為 Location(a j)=+( j-1) × d 說明如下: a 1的儲存位址為 a 2的儲存位址為+d=+(2-1)×d a 3的儲存位址為+d=+(3-1)×d . a j的儲存位址為+d=+( j-1)×d

二維陣列A[1 to am , 1 to an] a1,1a1,2.....a1,na2,1a2,2.....a2,n............am,1am,2.....am,n 名稱:A 起始位址: 維度:1 索引1上限:m 索引2上限:n 索引1,2下限:1 元素的大小或長度(資料型態):d 元素個數:m×n 儲存方式:轉換成一維(1)以列為主(Row-Major)或是(2)以行為主(Column-Major)

(1)以列為主(Row-Major) 若二維陣列為A[1 to am , 1 to an],則 Location(a i , j)=+( i-1) × n × d+( j-1) × d 若二維陣列為A[l1 to am , l2 to an],則 Location(a i , j)=+( i-l1) × (n-l2+1) × d+( j-l2) × d

(2)以行為主(Column-Major) 若二維陣列為A[1 to am , 1 to an],則 Location(a i , j)=+( j-1)×m ×d+( i-1) × d 若二維陣列為A[l1 to am , l2 to an],則 Location(a i , j)=+( j-l2) × (m-l1+1) × d+( i-l1) × d

一維陣列範例(一) - 求第n項的費氏級數

一維陣列範例(二) -求質數

二維陣列範例 -九九乘法表

應用-矩陣與多項式

前言 由於早期電腦的記憶體昂貴,程式設計師必須節省記憶空間 陣列的早期應用多集中於如何有效率地利用記憶體空間 如多項式和稀疏矩陣的表示法。

稀疏矩陣 矩陣的大部分元素都為零即稱稀疏矩陣 表示一個陣列中如果有很多位置沒有被使用,造成記憶體的浪費 我們可以將其轉變成另一個小的陣列,減少記憶體使用。

比方說一個陣列如下: 可以轉成一個新的陣列如下: 原本的陣列是int型態,總共用去5(行)*4(列)*2(int型態是2byte) = 40。 索引 1 2 3 7 4 5

可以轉成一個新的陣列如下: 範例 新的的元素是int型態,總共用去5(行)*3(列)*2(int型態是2byte) = 30。 40byte -30byte = 10byte,減少了10byte空間。 範例 索引 1 2 備註 5 4 原陣列有5行4列4個值 3 7 第0行第3列是7 第1行第1列是4 第2行第3列是1 第3行第0列是5

上三角陣列 一個方陣中對角線左下方都是0稱之。 設int first[5[5]: 索引 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

為了減少記憶體的使用,和稀疏陣列一樣可以轉換成一個新的陣列 新陣列的排法分為以列為主及以行為主: 把原陣列first當成一個梯形 梯形公式是(上底+下底)*高/2  (1+5)*5/2 = 15 =>新陣列為int second[15]。

索引 1 2 3 4 5 6 7 8 9 10 11 12 13 14 值 15 以列為主 兩個陣列轉換的關係: 令first[x][x]是原陣列,因為是方形矩陣,所以長寬相等,都是x 令y = (1+x) * x / 2,second[y]為壓縮後的陣列 令i,j是表示索引值 =>兩個陣列的關係: first[i][j] = second[ [ ( x + 1 ) + ( x - i ) ] *  i / 2 + ( j - i ) ]

索引 1 2 3 4 5 6 7 8 9 10 11 12 13 14 值 15 以行為主 兩個陣列轉換的關係: 令first[x][x]是原陣列,因為是方形矩陣,所以長寬相等,都是x 令y = (1+x) * x / 2,second[y]為壓縮後的陣列 令i,j是表示索引值 =>兩個陣列的關係: first[i][j] = second[j * ( j + 1 ) / 2 + i ]

下三角陣列 一個方陣中對角線右上方都是0稱之,假設int first[5][5]: 索引 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

為了減少記憶體的使用,和稀疏陣列一樣可以轉換成一個新的陣列 新陣列的排法分為以列為主及以行為主: 把原陣列first當成一個梯形 梯形公式是(上底+下底)*高/2  (1+5)*5/2 = 15 =>新陣列為int second[15]。

以列為主 兩個陣列轉換的關係: 令first[x][x]是原陣列,因為是方形矩陣,所以長寬相等,都是x 令y = (1+x) * x / 2,second[y]為壓縮後的陣列 令i , j是表示索引值 =>兩個陣列的關係: first[i][j] = second[ i * ( i + 1 ) / 2 + j ]。

以行為主 兩個陣列轉換的關係: 令first[x][x]是原陣列,因為是方形矩陣,所以長寬相等,都是x 令y = (1+x) * x / 2,second[y]為壓縮後的陣列 令i , j是表示索引值 =>兩個陣列的關係: first[i][j] = second[ (x + 1) + ( x - j ) ] * j / 2 + ( i - j) ]

多項式 P(x)=anxn+an-1xn-1+…+a1x+a0

int A[1 to n+2]={n, an, an-1,an-2,...,a0 } ; 儲存方式有兩種表示方式: 使用一個n+2長度的一維陣列A來儲存,陣列的第一個位置儲存最高項的指數n,其餘依指數遞減,依序儲存對應的係數 int A[1 to n+2]={n, an, an-1,an-2,...,a0 } ; 只儲存非零項,若有m項則使用一個2m+1長度的一維陣列A來儲存,陣列的第一個位置儲存非零項個數m,其餘依指數遞減,依序儲存每一個非零項的指數與係數 int A[1 to 2m+1]={m, e m-1, a m-1,e n-2, a n-2,..., e 0, a 0 } ;

結語 近年來電腦科技與元件製造技術精進,記憶體的價格不再高不可攀,節省空間不再是主要的考量,資料輸出入及處理的時間效率已是程式設計師的主要考量了,例如影像處理時會開啟一個很大的陣列,並將圖片或影像資料直接存放在這個陣列中,直接由此陣列存取資料,而不再以磁碟中的檔案資料做處理,如此一來,即可有效地節省輸出入的時間。