1樓:姐欣馨
時間複雜度
演算法的時間複雜度是指執行演算法所需要的時間。一般來說,計算機演算法是問題規模n 的函式f(n),演算法的時間複雜度也因此記做。
t(n)=ο(f(n))
因此,問題的規模n 越大,演算法執行的時間的增長率與f(n) 的增長率正相關,稱作漸進時間複雜度
2.空間複雜度
演算法的空間複雜度是指演算法需要消耗的記憶體空間。其計算和表示方法與時間複雜度類似,一般都用複雜度的漸近性來表示。同時間複雜度相比,空間複雜度的分析要簡單得多。
3.正確性
演算法的正確性是評價乙個演算法優劣的最重要的標準。
4.可讀性
演算法的可讀性是指乙個演算法可供人們閱讀的容易程度。
5.健壯性
健壯性是指乙個演算法對不合理資料輸入的反應能力和處理能力,也成為容錯性。
演算法的複雜度是以什麼來度量的?
2樓:匿名使用者
演算法執行過程中所需要的基本運算次數
3樓:肖詩柳尋群
乙個演算法的複雜度評價主要從
時間複雜度
和空間複雜度
來考慮時間複雜度
在剛才提到的時間頻度中,n稱為問題的規模,當n不斷變化時,時間頻度t(n)也會不斷變化。但有時我們想知道它變化時呈現什麼規律。為此,我們引入時間複雜度概念。
一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t(n)表示,若有某個輔助函式f(n),使得當n趨近於無窮大時,t(n)/f(n)的極限值為不等於零的常數,則稱f(n)是t(n)的同數量級函式。記作t(n)=o(f(n)),稱o(f(n))
為演算法的漸進時間複雜度,簡稱時間複雜度。
空間複雜度
與時間複雜度類似,空間複雜度是指演算法在計算機內執行時所需儲存空間的度量。記作:
s(n)=o(f(n))
演算法複雜度的意義是什麼?
4樓:匿名使用者
同一問題可用不同演算法解決,而乙個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。乙個演算法的評價主要從時間複雜度和空間複雜度來考慮。
1、時間複雜度
(1)時間頻度
乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。
乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t(n)。
(2)時間複雜度
在剛才提到的時間頻度中,n稱為問題的規模,當n不斷變化時,時間頻度t(n)也會不斷變化。但有時我們想知道它變化時呈現什麼規律。為此,我們引入時間複雜度概念。
一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t(n)表示,若有某個輔助函式f(n),使得當n趨近於無窮大時,t(n)/f(n)的極限值為不等於零的常數,則稱f(n)是t(n)的同數量級函式。記作t(n)=o(f(n)),稱o(f(n)) 為演算法的漸進時間複雜度,簡稱時間複雜度。
在各種不同演算法中,若演算法中語句執行次數為乙個常數,則時間複雜度為o(1),另外,在時間頻度不相同時,時間複雜度有可能相同,如t(n)=n2+3n+4與t(n)=4n2+2n+1它們的頻度不同,但時間複雜度相同,都為o(n2)。
按數量級遞增排列,常見的時間複雜度有:
常數階o(1),對數階o(log2n),線性階o(n),
線性對數階o(nlog2n),平方階o(n2),立方階o(n3),...,
k次方階o(nk),指數階o(2n)。隨著問題規模n的不斷增大,上述時間複雜度不斷增大,演算法的執行效率越低。
2、空間複雜度
與時間複雜度類似,空間複雜度是指演算法在計算機內執行時所需儲存空間的度量。記作:
s(n)=o(f(n))
說到底,就是程式執行效率和佔用空間的問題.
什麼是演算法的時間複雜度?
5樓:
是說明乙個程式根據其資料n的規模大小 所使用的大致時間和空間說白了 就是表示 如果隨著n的增長 時間或空間會以什麼樣的方式進行增長
例for(int i = 0; i < n;++i);這個迴圈執行n次 所以時間複雜度是o(n)for(int i = 0; i< n;++i)這巢狀的兩個迴圈 而且都執行n次
那麼它的時間複雜度就是 o(n^2)
時間複雜度只能大概的表示所用的時間
而一些基本步驟 所執行的時間不同 我們無法計算 所以省略如for(int i = 0;i < n;++i)a = b;
和for(int i = 0;i < n;++i);這個執行的時間當然是第二個快 但是他們的時間複雜度都是 o(n)判斷時間複雜度看迴圈
6樓:匿名使用者
時間複雜度表面的意思就是**花費的時間,但是一般使用這個概念的時候,更注重的是隨著資料量增長,**執行時間的增長情況。一般認為乙個基本的運算為一次執行算,例如加減乘除判斷等等
例1和例2時間複雜度都可以簡單認為是o(n),一般用時間複雜度的時候要取乙個下限即可,不用那麼精確,可能你認為例1是o(2n)而例2是o(n),但實際上這兩者對於時間複雜度的作用來說沒區別,前面已經說了,時間複雜度關注的是資料量的增長導致的時間增長情況,o(2n)和o(n)在資料量增加一倍的時候,時間開銷都是增加一倍(線性增長)。
又例如兩重迴圈的時間複雜度是o(n的平方),n擴大一倍,時間複雜度就擴大4倍。所以時間複雜度主要是研究增長的問題,一般效率較好的演算法要控制在o(n)或者o(log2n)
7樓:硬幣小耗
電腦科學中,演算法的時間複雜度是乙個函式,它定量描述了該演算法的執行時間。這是乙個關於代表演算法輸入值的字串的長度的函式。時間複雜度常用大o符號表述,不包括這個函式的低階項和首項係數。
使用這種方式時,時間複雜度可被稱為是漸近的,它考察當輸入值大小趨近無窮時的情況。
演算法複雜度分為時間複雜度和空間複雜度。其作用: 時間複雜度是指執行演算法所需要的計算工作量;而空間複雜度是指執行這個演算法所需要的記憶體空間。
(演算法的複雜性體現在執行該演算法時的計算機所需資源的多少上,計算機資源最重要的是時間和空間(即暫存器)資源,因此複雜度分為時間和空間複雜度)。
演算法分析的目的是什麼?
8樓:yzwb我愛我家
演算法分析的目的是分析演算法的效率以求改進。
演算法分析是對乙個演算法需要多少計算時間和儲存空間作定量的分析。 演算法(algorithm)是解題的步驟,可以把演算法定義成解一確定類問題的任意一種特殊的方法。在電腦科學中,演算法要用計算機演算法語言描述,演算法代表用計算機解一類問題的精確、有效的方法。
演算法分析的目的是分析演算法的效率以求改進。
9樓:玉簟秋
回答如下:
目的是評價演算法的效率,通過評價可以選用更加好更加適合的演算法來完成。
演算法分析
演算法分析是對乙個演算法需要多少計算時間和儲存空間作定量的分析。 演算法(algorithm)是解題的步驟,可以把演算法定義成解一確定類問題的任意一種特殊的方法。在電腦科學中,演算法要用計算機演算法語言描述,演算法代表用計算機解一類問題的精確、有效的方法。
中文名演算法分析
外文名algorithm analysis
應用演算法優化
網路應用
引擎的演算法應用
主要物件
時間複雜度、空間複雜度
作用評價演算法的好壞
簡介演算法是一組有窮的規則,它們規定了解決某一特定型別問題的一系列運算,是對解題方案內的準確與完整地描述。制定乙個演算法,一般要經過設計、確認、分析、編碼、測試、除錯、計時等階段。[1]
演算法+資料結構=程式,求解乙個給定的可計算或可解的問題,不同的人可以編寫出不同的程式,來解決同乙個問題,這裡存在兩個問題:一是與計算方法密切相關的演算法問題;二是程式設計的技術問題。演算法和程式之間存在密切的關係。
分析演算法可以**這一演算法適合在什麼樣的環境中有效地執行,對解決同一問題的不同演算法的有效性作出比較。[1]
通常對於乙個實際問題的解決,可以提出若干個演算法,如何從這些可行的演算法中找出最有效的演算法呢?或者有了乙個解決實際問題的演算法後,如何來評價它的好壞呢?這些問題都需要通過演算法分析來確定。
評價演算法分析效能的標準主要從演算法執行時間和佔用儲存空間兩個方面進行考慮,即通過分析演算法執行所需要的時間和儲存空間來判斷乙個演算法的優劣。[2]
時間複雜度
乙個程式的時間複雜度是指程式執行從開始到結束所需要的時間。
影響因素
乙個演算法是由控制結構(順序、分支和迴圈3種)和原操作(指固定資料型別的操作)構成的,其執行時間取決於兩者的綜合效果。為了便於比較同一問題的不同演算法,通常的做法是:從演算法中選取一種對於所研究的問題來說基本運算的原操作,以該原操作重複執行的次數作為演算法的時間度量。
一般情況下,演算法中原操作重複執行次數是規模n的某個函式t(n)。許多時候要精確的計算t(n)是困難的,引入漸進時間複雜度在數量上估計乙個演算法的執行時間,也能夠達到分析演算法的目的。[3]
計算方法
計算時間複雜度的時候,主要考慮演算法中最高端項的開銷,只要找出演算法中最高端的複雜度,就可以忽略低階和常數的複雜度。[3]
引入數學符號「o」來估算演算法時間複雜度,漸進時間複雜度的表示方法:f(n)=o(g(n)),其定義為,若f(n)和g(n)是定義在正整數集合上的兩個函式,則f(n)=o(g(n))表示存在正的常數c和  ,使得當  時,都滿足  。換句話說,就是這兩個函式當整形自變數n趨於無窮大時,兩者的比值是乙個不等於0的常數。
[3]當要計算某個演算法的時間複雜度f(n)時,可以找乙個更簡單的、階數相同的簡單演算法g(n)等同計算,這裡的g(n)是指替代函式,它具有和原演算法一樣更高階複雜度。[3]
例如,乙個程式的實際執行時間為:  ,則  。使用o記號表示的演算法的時間複雜度,稱為演算法的漸進時間複雜度。[3]
常見的漸進時間複雜度
通常用o(1)表示常數計算時間。常見的漸進時間複雜度有:規則
為了便於估算乙個演算法的時間複雜度,我們約定一下幾條可操作的規則:
(1)讀寫單個常量或單個變數、賦值、算術運算、關係運算、邏輯運算等,計為乙個單位時間。
(2)條件語句if(c),執行時間為(條件c的執行時間)+(語句塊s的執行時間)。
(3)條件語句if(c)s1 else s2,執行時間為(條件c的執行時間)+(語句塊s1和s2中執行時間最長的那個時間)。
(4)switch...case語句的執行時間是所有case子句中,執行時間最長的語句塊。
(5)訪問乙個資料的單個元素或乙個結構體變數的單個元素只需要乙個單位時間。
(6)執行乙個for迴圈語句需要的時間等於執行該迴圈體所需要時間乘上迴圈次數。
(7)執行乙個while(c)迴圈語句或者執行乙個do while(c)語句,需要的時間等於計算條件表示式c的時間與執行迴圈s的時間之和再乘以迴圈的次數。
(8)對於巢狀結構,演算法的時間複雜度由巢狀最深層語句的執行次數決定的。
(9)對於函式呼叫語句,它們需要的時間包括兩部分,一部分用於實現控制轉移,另一部分用於執行函式本身。[3]
演算法的空間複雜度,時間複雜度,有窮性分別是什麼意思
通俗來說 空間複雜度是指運算過程中佔用的記憶體和輸入的漸進關係。時間複雜度是指運算過程中使用的時間和輸入的漸進關係。有窮性是指在有限時間內可以結束運算。演算法的時間複雜度與空間複雜度各是什麼意思 是說明乙個程式根據其資料n的規模大小 所使用的大致時間和空間說白了 就是表示 如果隨著n的增長 時間或空...
演算法的空間複雜度指的是什麼演算法的空間複雜度是指?
空間複雜度 space plexity 是對乙個演算法在執行過程中臨時佔用儲存空間大小的量度,記做s n o f n 比如直接插入排序的時間複雜度是o n 2 空間複雜度是o 1 而一般的遞迴演算法就要有o n 的空間複雜度了,因為每次遞迴都要儲存返回資訊。乙個演算法的優劣主要從演算法的執行時間和所...
關於時間複雜度的計算,如何計算時間複雜度?
給我十分,我告訴你答案。請問樓主答案,我也不會。如何計算時間複雜度?一般情況下,演算法的基本操作重複執行的次數是模組n的某乙個函式f n 因此,演算法的時間複雜度記做 t n o f n 隨著模組n的增大,演算法執行的時間的增長率和f n 的增長率成正比,所以f n 越小,演算法的時間複雜度越低,演...