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 歸併排...