1樓:匿名使用者
i每迴圈一次就乘了2,知道當i>=n時迴圈結束,迴圈m次有2^m>=n,得到m=log2n。
2樓:匿名使用者
時間複雜度
同一問題可用不同演算法解決,而一個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。一個演算法的評價主要從時間複雜度和空間複雜度來考慮。
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))
我們一般所討論的是除正常佔用記憶體開銷外的輔助儲存單元規模。
請問演算法的時間複雜度是怎麼計算出來的?
3樓:
首先假設任意copy
一個簡單運算的時間都是1,例如a=1;a++;a=a*b;這些運算的時間都是1.
那麼例如
for(int i=0;i注意,這裡計算一次的時間是1.
}那麼上面的這個例子的時間複雜度就是 m*n再例如氣泡排序的時間複雜度是n*n;快排的時間複雜度是log(n)。
詳細的情況,建議你看《演算法導論》,裡面有一章節,具體講這個的。
這個演算法的時間複雜度是如何計算出來的?
4樓:
如果bai題目允許優化程du
序的話,計算zhix的多次冪時可以保留中dao間結果,比版如你已經有了權x^3,計算x^4的時候就不用從頭乘一遍,也不用二分著來,直接x^3在乘x就可以了。如果採用這樣的策略,這題是可以以o(n)實現的。
如果不考慮上面所說,複雜度是nlogn,你的計算過程可行。另外也可估算,即單次求冪是logn,求n次就是nlogn,這樣估出來的是上界。但是在不保留中間結果的演算法下,是無法達成o(n)的,故可以不嚴謹地「直覺」知道下界也是nlogn。
程式中的時間複雜度是怎麼計算的?
5樓:匿名使用者
演算法複雜度的介紹,見百科:
複雜度o(nlog2n)怎麼計算的?
6樓:匿名使用者
for(int j=1; j<=n; j*=2)這個迴圈最終執行的次數假設為x,則x次的時候j=2^x 。
當j>n時停止執行,於是2^x>n ,則可以認為該迴圈一共執行了log2(n)次。
所以該迴圈的時間複雜度為o(log2(n)),簡記為o(log n) ,忽略掉2的底數。
方法:1、首先,看外迴圈for(i=0;i2、再看內部迴圈,for(j=1;jn===》x=log2(n)。
3、如果把兩個迴圈合在一起看,也就是一共迴圈了n個x次,也就是log2(n)。
時間複雜度o(log2^n)的迴圈語句
7樓:匿名使用者
錯了 明顯的程式
i的初始值應當為1.
這個迴圈執行的次數為以2為底n的對數次
8樓:匿名使用者
....就相當於2^m = n兩邊取以2為底的對數。就是m的值。
演算法的時間複雜度與空間複雜度各是什麼意思
是說明一個程式根據其資料n的規模大小 所使用的大致時間和空間說白了 就是表示 如果隨著n的增長 時間或空間會以什麼樣的方式進行增長 例for int i 0 i n i 這個迴圈執行n次 所以時間複雜度是o n for int i 0 i n i 這巢狀的兩個迴圈 而且都執行n次 那麼它的時間複雜度...
計算複雜度是怎麼計算的啊,我經常見到O 這個函式,但是不知
常用時間複雜度和空間複雜度。時間複雜度,指的是在迴圈等演算法中,最基本的一條語句的執行次數。如for int i 1 i n i m 假設m是一個可以自增1的變數 上述基本語句就是m 可以看到for迴圈將進入n次,每次都執行一下m 所以說這個小演算法的時間複雜度就是o n 空間複雜度,指的是演算法在...
折半查詢遞迴版的時間複雜度是多少,空間複雜度是多少?那非遞迴版的呢
遞迴折半查詢的時間複雜度是o log2n 空間複雜度是o log2n 也是遞迴的最大深度 非遞迴的時間複雜度是o log2n 空間複雜度是o 1 僅僅用幾個單變數就夠了 大學理工類都有什麼專業 10 理工類專業 數學與應用數學 資訊與計算科學 物理學 應用化學 生物技術 地質學 大氣科學類 理論與應...