電腦科學的理論基礎.ppt

時間複雜度(Time complexity) 定義: f (n)=θ (g (n)) 若且惟若存在3個正整數c1、c2和n0, 當n≧n0時,c1g(n)≦f(n) ≦c2g(n) g(n)為f(n)的的下限。 g(n)同時為f(n)的上、下限。 比 O(f(n))、 Ω (f(n))更精確 空間複雜度(Space complexity) 固定空間需求 變動空間需求 效率分析與效率計量 效率分析:與機器無關的時間 與空間分析 效率計量:取得與機器的執行 時間,用來找出程式中沒有效率 的程式碼。 performance analysis Performance measurement 程式所需時間(TP)=編譯時間+執行時間 TP(m)=c1ADD(m)+c2SUB(m)+c3LAD(m) +c4STA(m) 程式步驟(program step) 執行時間與實體變數 性質無關 迴圈與遞迴次數相同,但因遞迴負擔大,速度 比迴圈慢 效率分析與效率計量 效率分析與效率計量 程式步驟(program step) 計算 s/e * F = total_step 敘述步驟 頻率 全部步驟 效率分析與效率計量 計算程式步數 表1 簡單的迴路加總程式 敘述(statement) s/e 執行次數 步數 T fSum(T a[], int n) { T msum=0; for (int i=0; in; i++) msum = a[i]+msum; return msum; } 0 0 0 0 0 0 1 1 1 1 n+1 n+1 1 n n 1 1 1 0 0 0 總 計 2n+3 效率分析與效率計量 Big “O” 為時間複雜度理論上限 Ω 為時間複雜度理論下限 θ為函數同時是上限也是下限 NP problem表示指數時間的解法但無法證明是否有多項式時間的解決 Un-decidable problem 表示沒有演算法可解 第六章常見的資料結構 陣列(array)基本觀念 1.相同形式(type)元素組合 2.依索引(index) 加以編號,大小 固定(靜態陣列) 3.可以配合控制迴路語法來描述 反覆運算 動態陣列 元素可有不同型態(type) 大小可以變動 索引(index)必須用特定方法存取 效率高 空間節省 陣列與動態陣列差異 陣列A 動態陣列B 大小可變動 大小固定 元素有固定的型態 A[0]……………………A[4] B.element() ………. 元素可又不同的型態 陣列的表示方法 F(x)=12x5+2x3+4 第一種表示法: array f(7)=(7,12,0,2,0,0,4) 第二種表示法 array f(7)=(3,5,12,3,2,0,4) 堆疊(stack) 一群同質元素的組合 後進先出(LIFO) 中序轉後序表示法(先乘除後加減) x/y+5-a*3+6*p xy/5+a3*-6p* 後序 佇列(queue) 先進先出(FIFO) 相同型式(TYPE) 最大堆積(max heap) 一個數節點不小於自己二個子節點(完整二元樹) 最小堆積(min heap) 一個數節點不大於自己二個子節點(完整二元樹) ○ 55 15 5 12 15 22 鏈結串列(linked list) 相當有效率的資料結構 關鍵在於指標(pointer)的觀念 記憶體空間的運用 元素的搬移效率 5 7 14 2 null 頭(head) 節點(node) 尾(tail) 鏈結(link) 從不同的抽象層次來看資料結構 資料結構的層次 程式

文档评论(0)

1亿VIP精品文档

相关文档