同一問題可用不同演算法 解決,而乙個演算法的質量優劣將影響到演算法乃至程式 的效率。演算法分析的目的在於選擇合適演算法和改進算
演算法複雜度
演算法複雜度 分為時間複雜度和空間複雜度 。其作用: 時間複雜度是度量演算法執行的時間長短;而空間複雜度是度量演算法所需儲存空間的大小。
乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例 ,哪個演算法中語句執行次數多,它花費時間就多。乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t(n)。
1. 一般情況下,演算法的基本操作重複執行的次數是模組n的某乙個函式f(n),因此,演算法的時間複雜度記做:t(n)=o(f(n)) 分析:隨著模組n的增大,演算法執行的時間的增長率和f(n)的增長率成正比,所以f(n)越小,演算法的時間複雜度越低,演算法的效率越高。 2. 在計算時間複雜度的時候,先找出演算法的基本操作,然後根據相應的各語句確定它的執行次數,再找出t(n)的同數量級(它的同數量級有以下:1,log2n ,n ,nlog2n ,n的平方,n的三次方,2的n次方,n!),找出後,f(n)=該數量級,若t(n)/f(n)求極限可得到一常數c,則時間複雜度 t(n)=o(f(n)) 例:演算法: for(i=1;i<=n;++i) } 則有 t(n)= n的平方+n的三次方,根據上面括號裡的同數量級,我們可以確定 n的三次方 為t(n)的同數量級 則有f(n)= n的三次方,然後根據t(n)/f(n)求極限可得到常數c 則該演算法的 時間複雜度:t(n)=o(n的三次方)
按數量級遞增排列,常見的時間複雜度有: 常數階o(1),對數階o(log2n),線性階o(n), 線性對數階o(nlog2n),平方階o(n2),立方階o(n3),..., k次方階o(nk), 指數階o(2n) 。隨著問題規模n的不斷增大,上述時間複雜度不斷增大,演算法的執行效率越低。
與時間複雜度類似,空間複雜度是指演算法在計算機內執行時所需儲存空間的度量。記作: s(n)=o(f(n)) 我們一般所討論的是除正常占用記憶體開銷外的輔助儲存單元 規模。
來自 百度百科 argc argv
argc,argv 用命令列編譯程式時有用。主函式main中變數 int argc,char argv 的含義 我們平時定義主函式時通常的寫法為 int main 或void main 其實,int main 只是 unix 及 linux 默許的用法,main int argc,char argv...
xml簡介 來自百度百科
xml 概述xml extensible markup language 即可擴充套件標記語言,它與html一樣,都是sgml standard generalized markup language,標準通用標記語言 xml是internet環境中跨平台的,依賴於內容的技術,是當前處理結構化文件資...
複雜度和空間複雜度百科
通過字面意思可以知道 表示方法 我們一般用 大o符號表示法 來表示時間複雜度 t n o f n n是影響複雜度變化的因子,f n 是複雜度具體的演算法。評價乙個演算法的效率主要是看它的時間複雜度和空間複雜度情況。可能有的開發者接觸時間複雜度和空間複雜度的優化不太多 尤其是客戶端 但在服務端的應用是...