演算法複雜度 來自百度百科

2021-05-24 04:54:15 字數 1047 閱讀 8953

同一問題可用不同演算法 解決,而乙個演算法的質量優劣將影響到演算法乃至程式 的效率。演算法分析的目的在於選擇合適演算法和改進算

演算法複雜度

演算法複雜度 分為時間複雜度和空間複雜度 。其作用: 時間複雜度是度量演算法執行的時間長短;而空間複雜度是度量演算法所需儲存空間的大小。

乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例 ,哪個演算法中語句執行次數多,它花費時間就多。乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為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 是複雜度具體的演算法。評價乙個演算法的效率主要是看它的時間複雜度和空間複雜度情況。可能有的開發者接觸時間複雜度和空間複雜度的優化不太多 尤其是客戶端 但在服務端的應用是...