下面程式段的時間複雜度為ais0whiles《n

2021-03-04 09:15:33 字數 1325 閱讀 4277

1樓:0揮不去的傷痛

i=s=0;    //時間

bai復du

雜度zhi是daoo(1)

while(s複雜度是o(n)

i++;         //時間複雜度是o(n)s+=i;        //時間複雜度是o(n)}//累計時間複雜度是o(1+n+n+n),即o(n)如有疑版問請追問,如

權您滿意請採納,謝謝

2樓:聽不清啊

這裡沒有正確答案哪。應為o(n^0.5)

為什麼該程式段的時間複雜度為o(n^{1/2}),{i=0;s=0;while(s<=n){i++;s=s+i;}}

3樓:匿名使用者

條件:while(s < t)

實際上bais的值如下du:

s = t = 1 + 2 + 3 + 4 +... + k, 實際上累加了k次

這是個等差數列zhi

求和 sn= n(a1+an)/2 = k*(1+k)/2 = t通過k*(1+k)/2=t求解daok, 當回k非常大時k和k+1等價,表示式可化簡為

答k^2 = t, k = t^(1/2), 這裡的t是已知的因此時間複雜度為o(n^1/2)

下面程式段的時間複雜度是 ? i=1; while(i<=n) i=i*2

4樓:仁昌居士

i=1; while(i<=n) i=i*2的時間複雜度copyo(log2n)。

整段**語句,中迴圈體只有一個while(i<=n),執行的次數是:

i = 1,i = 1*2=2,判斷2是否小於等於n,是則繼續迴圈,否則跳出迴圈。

i =2,i = 2*2=4,判斷4是否小於等於n,是則繼續迴圈,否則跳出迴圈。

i =4  ,i = 4*2=8,判斷8是否小於等於n,是則繼續迴圈,否則跳出迴圈。

根據規律發現,迴圈次數由log2n決定,所以複雜度是o(log2n)。

5樓:匿名使用者

假設迴圈次數是x。

i = 1, 2, 4, 8, 16 ,i = 2^x條件是i <= n

2^x <= n

所以x <= log2n 一共執行迴圈體log2n次,所以複雜度是o(log2n)

6樓:匿名使用者

迴圈退出的條件為i > n

設第k次迴圈後退出迴圈

於是2^k > n

因此k > log2n 以2為底的對數,k的實際值為log2n上取整

因此時間複雜度為o(log2n)

演算法的時間複雜度和空間複雜度怎麼看

時間複雜度,就是計算程式執行的時間,空間複雜度,就是所佔的記憶體空間。同一問題可用不同演算法解決,而一個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。電腦科學中,演算法的時間複雜度是一個函式,它定量描述了該演算法的執行時間。這是一個關於代表演算法輸入值...

演算法的複雜度主要包括演算法的時間複雜度和空間複雜度,演算法的時間複雜度是指

時間複雜度考慮的是演算法的執行時間,因此是d 演算法的空間複雜度指的是什麼?1 簡單來說bai 演算法的空間du 複雜度指的是佔zhi用記憶體 dao,cpu等計算機資源回的程度。答 2 具體點來解釋就是 空間複雜度 space complexity 是對一個演算法在執行過程中臨時佔用儲存空間大小的...

時間複雜度為On的排序演算法,你會嗎

排序方法 最壞時間複雜度 最好時間複雜度 平均時間複雜度直接插入 o n2 o n o n2 簡單選擇 o n2 o n2 o n2 起泡專排序屬 o n2 o n o n2 快速排序 o n2 o nlog2n o nlog2n 堆排序 o nlog2n o nlog2n o nlog2n 歸併排...