[英]Is the time complexity of this loop O(n*log(n))?
如果有人向我解釋如何分析此循環的時間復雜度,我將不勝感激:
int t;
for (i = 1; i <= n; i++){
t = i;
while(t > 0){
t = t/2
}
}
我傾向於認為這是 O(n*log(n)) 因為它非常類似於:
int t;
for (i = 1; i <= n; i++){
t = n;
while(t > 0){
t = t/2
}
}
但它對變量 t 的賦值較少。 是這種情況嗎? 如果是這樣,我如何才能更嚴格地得出這個結論?
對於第一個片段,內循環運行log(1) + log(2) + ... + log(n)
次,這與log(1 * 2 * ... * n) = log(n!)
通過 Sterling's Approximation 是n log(n)
。 您的第二個代碼段具有相同的復雜性。 即使它碰巧做的作業較少,我們也只關心整體行為。 在這種情況下,兩者都是線性的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.