06演算法與資料結構.docVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
06演算法與資料結構

一、演算法:Algorithm 定義: 一個演算法應具備之五個特性(條件) .輸入:由外界供給演算0或多個輸入資料。 .輸出:至少產生一個輸出。 .明確性:要很明白地知道所做的運算要如何處理。 .有限性:經過一些步驟後必需要執行終止,不會造成無窮迴路。 .有效性:即每一步驟皆能用紙筆完成。 影響程式執行時間因素: .程式所輸入資料量多少有關(使用者) .使用演算法(algorithm)所須時間的複雜度(程式) .Compiler的產生機器碼是否最佳化(系統程式) .指令在電腦中執行的速度(電腦硬體) 二、遞迴:Recursion 在程序中直接或間接呼叫該程序本身,稱之為遞迴。 能以if-then-else及do-loop迴圈敘述所寫成之程式,均可用Recursive Procedure改寫。 遞迴的種類:有直接遞迴與間接遞迴兩種。 Direct Recursion:在Procedure內可直接呼叫程式本身。 Indirect Recursion:在Procedure內,呼叫其他Procedure,而由其它Procedure呼叫原程序。 C, Pascal, PL/I, Lisp, Prolog均可使用Recursion。(Fortran不可以) Recursion的優點:簡短明確。 Recursion的缺點:Recursion時的參數儲存於Stack,取回及移轉耗費時間,執行時間受影響。 三、線性串列:Linear List 線性串列又稱有序串列(ordered list)或稱循序串列(sequential list)。 其為一組記錄X(1), X(2), …, X(n), n0,其間之相對關係是線性的。線性串列最常見為陣列。(其中X(1)為第一個元素,X(i)在X(i-1)之後) 串列表示法: .循序對應:Sequential Mapping,如陣列。 .鏈結串列:Linked List,如指標。 線性串列可進行之運算: .在第i個記錄前後插入一新記錄。 .將第i個記錄刪除。 .存取第i個記錄,即更新其內容。 .複製該線性串列。 .依某一欄位排序串列。 .依某一欄位搜尋串列。 陣列:Array為一群index和value成對組成之集合,具有下列特性: .可透過index找到相對應的值。 .在記憶體中採循序方式儲存,且組成元素大小一定。 .陣列中之元素均為同一資料型態。 四、一維陣列表示法 當陣列表示法為A(start : end)時,start為下限,end為上限。假設s0為起始位址,d為每一元素所佔之空間,則A(i) = s0 + (i - start) * d 例:假設A為一具有1000個元素的陣列,每一個元素為4個位元組的實數。若A[500]的位址為100016,則A[1000]的位址為 。 例:陣列A(1930:1995)中,A(1941)的位址為212,d為4,則A(1982)的位址為 。 Ans:17D016, 376 五、二維陣列表示法 二維陣列轉成一維陣列,儲存在記憶中,有Row-major或Column-major之存放方式。 當陣列的表示法為A(s1:e1, s2:e2)時, .以列為主:(列↑,值↑) 公式為:A(i, j) = s0 + (i - s1)(e2 - s2 + 1) * d + (j - s2) * d .以行為主:(行↑,值↑) 公式為:A(i, j) = s0 + (j - s2)(e1 - s1 + 1) * d + (i - s1) * d 例:若A(1, 1)在位置2,A(2, 3)在位置18,A(3, 2)在位置28,則A(4, 5)在位置 。 例:假設A為二維陣列,通常A的每一個元素皆以列或行的方式儲存在計算機的連續位置,假設A的每一個元素皆以一個位置來儲存。若A[2, 3] 存在1756且A[3, 3] 存在1760,則 A[4, 4]應存在 。 Ans:46, 1765 六、二元樹 定義:包含一樹根及兩個分離之二元樹(左子樹與右子樹)所構成。是由有限node所組成之集合,每個節點之分支度(degree)最多為2,也可能是空集合。 分為陣列表示法(用循序之一維陣列表示)及鏈結串列表示法兩種。 陣列表示法:將二元樹想成一個完滿二元樹,第i個階度具有2i-1個節點,依序存放於記憶體中。其優點:存取方便;缺點:浪費時間。 鏈結串列表示法:每個節點之結構為: .優點:插入與刪除容易。 .缺點:很難找到node之parent。 七、二元樹之追蹤 即拜訪二元樹中之全部節點各一次,且每一節點僅拜訪一次。 目的:可將樹狀資料化成線性次序排列之資料。 追蹤方法有

文档评论(0)

teda + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档