演算法效率的度量方法:事後統計的方法、事前分析估算方法。
演算法的時間複雜度:在進行演算法分析時,語句總的執行次數t(n)是關於問題規模n的函式,進而分析t(n)隨n的變化情況並確定t(n)的數量級。演算法的時間複雜度記作:t(n)=o(f(n))。它表示隨問題規模n的增大,演算法執行時間的增長率和f(n)的 增長率 相同,稱作演算法的漸進時間複雜度,簡稱為時間複雜度。隨著輸入規模n的增大,t(n)增長最慢的演算法是最優的演算法。
推導大o階的方法:1.用常數1取代執行時間中的所有加法常數;2.在修改後的執行次數函式中,只保留最高端;3.如果最高端項存在且不是1,則去除與這個項相乘的常數。(考慮數列)
線性階:一般含有非巢狀迴圈涉及線性階,線性階就是隨著問題規模n的擴大,對應計算次數呈直線增長。
平方階:2個迴圈巢狀在一起。
對數階:
函式呼叫的時間複雜度分析
演算法的空間複雜度:計算演算法所需要的儲存空間,s(n)=o(f(n))。
資料結構與演算法 二 時間複雜度和空間複雜度
演算法採用的策略 方案 編譯產生的 質量 問題的輸入規模 機器執行指令的速度 由此可見,拋開計算機硬體,乙個程式的執行時間依賴於演算法的好壞和輸入規模。int i,sum 0,n 100 for i 1 i n i printf d sum int i,sum 0,n 100 sum i n n 2...
資料結構與演算法(二) 時間複雜度和空間複雜度
演算法採用的策略,方案 編譯產生的 質量 問題的輸入規模 機器執行指令的速度 由此可見,拋開這些與計算機硬體 軟體有關的因素,乙個程式的執行時間依賴於演算法的好壞和問題的輸入規模 我們研究演算法的複雜度,側重的是研究演算法隨著輸入規模擴大增長量的乙個抽象,而不是精確的定位需要執行多少次 我們不關心語...
資料結構和演算法(二) 時間複雜度和空間複雜度
演算法效率的度量方法 事後統計方法 這種方法主要是通過設計好的測試程式和資料,利用計算機計時器對不同酸防編制的程式執行時間進行比較,從而確定演算法效率的高低。這種方法有很大的缺陷,必須依據演算法事先編制好測試程式,通常需要花費大量時間和精力,如果完了發覺測試的是糟糕的演算法,就會功虧一簣。不同測試環...