- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
演算法的复杂度
演算法的效率分析 演算法的效率分析 什麼是有效率的演算法?電腦學家為此衡量準則提供了客觀的標準—分析演算法的執行時間和記憶體需求。以時間複雜度或空間複雜度來討論演算法的效率 解決相同的問題,演算法所用的時間複雜度和空間複雜度愈少愈好。 時間複雜度(time complexity):一個程式或演算法所需的執行時間; 空間複雜度(space complexity):一個程式或演算法所需的記憶體空間。 演算法的執行次數 程式1-4 陣列元素加總 int Sum(int data[],int n) { int summation=0; for (int i=0; in; i++) summation += data[i]; return summation; } 程式1-5 陣列元素加總並計算所有指令執行的次數 int count = 0; // 全域變數宣告 count++; // 計算宣告 int 指令的執行 int Sum(int data[],int n) { int summation=0; count++; // 計算宣告 int 指令的執行 for (int i=0; in; i++) { count++; // 計算 for 指令的執行次數 summation += data[i]; count++; // 計算 = 指令的執行次數; } count++; // 計算最後一次 for 指令的執行 count++; // 計算 return 指令的執行 return summation; } 演算法的執行次數(續) 程式1-6 計算陣列元素加總所有指令執行的次數 count++; int Sum(int data[],int n) { count++; // 計算宣告 int 指令的執行 for (int i=0; in; i++) count += 2 count += 2; } 程式1-6 只保留程式1-5 的主體和加總count 的指令。 此程式的執行總次數為2n+4,其中 for 迴圈每執行一次,count會計數兩次;而迴圈共計有n次,所以for迴圈內即執行2n 次。 演算法複雜度的表示方法:O、Ω 和Θ 假設有兩個演算法都可解決問題P,其輸入資料量為n;演算法 A 的估算執行次數為 4n2+174,演算法 B 的估算執行次數為 n3+5n+6。(見下圖) 演算法複雜度的表示方法:O、Ω 和Θ 精確計算演算法的執行步驟或時間的工作過於繁瑣。 電腦處理的是大量的資料。 我們比較關心:資料量大的時候,演算法是否夠好。 精簡的方法分析:演算法的複雜度:O ,「Big O」「大O」問題的複雜度:Ω最佳演算法: Θ 用大O表示時間複雜度 定義:f (n)=O (g (n)) 若且唯若存在兩個正整數c和n0,當n?n0時,f (n) ? c?g (n)。 f(n)指的是演算法的執行時間(步驟),我們希望能找到g(n);只要在n?n0後,c?g(n)一定會大於或等於f(n),那麼就可以用O(g(n))來表示f(n)。 請注意在上圖中,當n ? 14 (=n0) 之後,c?g(n) 一定會大於或等於f(n)(5n2 ? 4n2+174), 所以O(n2)足以代表4n2+174 。 範例 4n+12 = O(n),因為存在c=5,n0=12,使得n?12後,4n+12? 5n(或c=6,n0=6,使得n?6後,4n+12 ? 6n); 10n+25 = O(n),因為存在c=12,n0=13,使得n?13後,10n+25 ? 12n; 8n2+11n+18 = O(n2),因為存在c=9,n0=13,使得n?13後,8n2+11n+18 ? 9n2; 6×2n+n2 = O(2n),因為存在c=7,n0=4,使得n?4後,6×2n+n2? 7×2n; 範例 326 = O(1),因為存在c=327,n0可任取,使得n? n0後,326 ? 327×1; 9n2+n+11 ? O(n),因為找不到適當的c和n0,使得n?n0後,9n2+11 ? cn; 100n3 = O(n4),因為存在c=16,n0=8,使得n?8後,100n3 ?16n4。 以大O表示法分辨演算法的優劣 O(1)稱為常數時間,即不論演法的步驟須需要多少指令,只要不像迴圈般重複執行,皆視為常數時間; O(n)稱為線性時間,取其執行步驟的增加趨勢與n的增加趨勢為線性關係之意; O(n2)為平方時間;依此類推, O(2n)則稱為指數時間。 如此一來,我們會說O(logn)的演算法比O(n)來得有效率,O(n)比O(n2)來得有效率…。
您可能关注的文档
最近下载
- 西门子 go topCT 中文版.pdf VIP
- 复合材料【全套课件】.ppt VIP
- 复合材料 第八章 先进复合材料.ppt VIP
- 人教版八年级物理第九单元《压强》测试题及答案.doc VIP
- 《复合材料学》全套教学课件.pptx
- 复合材料复合材料导论.ppt VIP
- 2025年闽教版(2024)小学英语四年级上册(全册)教学设计(附目录P123).docx
- 冠心病的介绍与治疗PPT.pptx VIP
- 2025云南昆明巫家坝建设发展有限责任公司及下属公司第三季度招聘23人笔试参考题库附答案解析.docx VIP
- 2.2.3 气候——特征和影响因素(课件)八年级地理上册(人教版).pptx VIP
文档评论(0)