時間複雜度(time complexity)又稱時間複雜性或計算複雜度,它是演算法有效性的度量之一。
時間複雜度是乙個演算法執行時間的相對量度,因為執行簡單操作所需要的時間因機器的軟硬體環境不同而不一樣,所以只討論影響執行時間的另乙個因素——演算法中進行簡單操作次數的多少,所以通常把演算法中包含簡單操作次數的多少叫做該演算法的時間複雜度。
若解決乙個問題的規模為n,即所處理的資料中包含n個元素,則演算法的時間複雜度通常是n的乙個函式f(n)。
一般只要大致計算出相應的數量級(order)即可,所以採用大o表示,比如當f(n)為n的多項式時,取最高次冪即可。
比如內層迴圈的執行次數為 f(n)=2n2+3n,則時間複雜度為o(n2).
演算法的時間複雜度通常有 o(1)(常量階)、o(n½) 、 o(n)(線性階)、 o(logn)(對數階)、 o(nlogn)、 o(n2)(平方階)、 o(n3)、 o(2n)(指數階)、o(n!)等形式。
當n大於一定的值後,各種不同的數量級對應的值存在著如下關係:
o(logn)½)2)3) n)
乙個演算法的時間複雜度還可以具體分為最好、最壞和平均三種情況,對於多數演算法,平均和最差兩種情況下的時間複雜度相應的數量級往往相同,也有一些演算法,其最好、最壞、平均三種情況下的時間複雜度或相應數量級都相同。
空間複雜度(space complexity)或稱空間複雜性是對乙個演算法在執行過程中臨時占用儲存空間大小的量度,包括儲存演算法本身所占用的儲存空間、演算法的輸入/輸出資料所占用的儲存空間和演算法在執行過程中臨時占用的儲存空間等方面。
乙個演算法的空間複雜度通常只考慮在執行過程中為區域性變數分配的儲存空間大小,它包括為參數列中值參變數分配的儲存空間和為在函式體中定義的區域性變數分配的儲存空間兩個部分。
若乙個演算法為遞迴演算法,其空間複雜度為遞迴所使用的工作棧空間的大小,它等於一次呼叫所分配的臨時儲存空間的大小乘以被呼叫的次數(即為遞迴呼叫的次數加1,這個1表示開始進行的一次非遞迴呼叫)。
基礎知識 演算法複雜度
時間複雜度 time complexity 又稱時間複雜性或計算複雜度,它是演算法有效性的度量之一。時間複雜度是乙個演算法執行時間的相對量度,因為執行簡單操作所需要的時間因機器的軟硬體環境不同而不一樣,所以只討論影響執行時間的另乙個因素 演算法中進行簡單操作次數的多少,所以通常把演算法中包含簡單操作...
時間複雜度基礎知識
一般來說,評價乙個演算法的好壞就是看它的時間和空間,因為空間現在的記憶體都很大,考慮的比較少,我們主要考慮演算法的時間複雜度怎樣進行度量。問題的規模n定義 問題規模n與該演算法在執行時所佔的空間s與所耗費的時間t有關。對不同的問題其含義不同 對矩陣是階數 對多項式運算是多項式項數 對圖是頂點個數 對...
演算法複雜度基礎
演算法進行計算的時候,儲存資料需要占用一定的空間,執行計算需要耗費一定的時間時間。演算法複雜度就是在演算法計算過程中對 空間 與 時間 的評價。解決同乙個問題,不同演算法所有的空間和時間是不同的,這取決於演算法是如何設計的。同樣,同乙個問題,規模不同時,同乙個演算法所用的空間和時間也不同。例如 某排...